StackOverflowError不知道出了什么问题

Bri*_*Ben 1 java stack-overflow class

尝试运行我的程序时,我不断收到此错误.

Exception in thread "main" java.lang.StackOverflowError

at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
at javax.swing.UIDefaults.getUI(UIDefaults.java:752)
at javax.swing.UIManager.getUI(UIManager.java:1001)
at javax.swing.JPanel.updateUI(JPanel.java:109)
at javax.swing.JPanel.<init>(JPanel.java:69)
at javax.swing.JPanel.<init>(JPanel.java:92)
at javax.swing.JPanel.<init>(JPanel.java:100)
at serverProperties.<init>(serverProperties.java:164)
at exportProperties.<init>(exportProperties.java:8)
at serverProperties.<init>(serverProperties.java:162)
Run Code Online (Sandbox Code Playgroud)

它只在尝试从某个类访问方法后发生.

这是主要类:

public class serverProperties extends JPanel
{
    //Add classes
    exportProperties writeProperties = new exportProperties();

    //Assume I created the array sent to the exportProperties class

    public serverProperties()
    {
        CheckBoxListener checkListener = new CheckBoxListener();

        //Assume I created the check box and added the listener for it
    }


    private class CheckBoxListener implements ItemListener
    {

        public void itemStateChanged (ItemEvent event)
        {
            JCheckBox checkBox;
            checkBox= (JCheckBox)event.getSource();

            //Process check Boxes
            if (checkBox.isSelected())
            {
                checkBox.setText("Yes");
                writeProperties.exportFile(propertiesArr);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是上面代码访问的类的代码:

public class exportProperties extends serverProperties
{


    public void exportProperties(String[] args)
    {
        exportFile(args);
    }

    public static void exportFile(String[] propertiesArr)
    {
        try
        {
            FileWriter outFile = new FileWriter("Path/file.txt");
            BufferedWriter out = new BufferedWriter(outFile);

            //Loop through properties
            for (int i=0; i < 27; i++)
            {
                out.append(propertiesArr[i]);
            }
            //out.write("Test");
            out.close();

        }
        catch (IOException exception)
        {
            exception.printStackTrace();
        }
    }

    public void importFile()
    {

    }


}
Run Code Online (Sandbox Code Playgroud)

一旦我删除对exportProperties类的调用,该程序就可以正常工作.带错误信息,最后两行

at exportProperties.<init>(exportProperties.java:8)
at serverProperties.<init>(serverProperties.java:162)
Run Code Online (Sandbox Code Playgroud)

它们在结束之前重复了很多次.

我用谷歌搜索,谷歌搜索,我不知道发生了什么......我很感激你的帮助!

Jon*_*eet 8

你的serverProperties班级有这个:

exportProperties writeProperties = new exportProperties();
Run Code Online (Sandbox Code Playgroud)

...创建一个实例exportProperties.但是,exportProperties扩展serverProperties,构建一个exportProperties再次执行上述行......所以它继续.

在不知道你想要实现什么的情况下,除了"不要那样做"之外,很难给出非常具体的帮助.我怀疑你不应该在这里使用继承.(目前尚不清楚为什么要扩展JPanel...尝试优先考虑组合而不是继承.)

(您还应该修改您的类名以遵循Java约定......)