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)
它们在结束之前重复了很多次.
我用谷歌搜索,谷歌搜索,我不知道发生了什么......我很感激你的帮助!
你的serverProperties
班级有这个:
exportProperties writeProperties = new exportProperties();
Run Code Online (Sandbox Code Playgroud)
...创建一个实例exportProperties
.但是,exportProperties
扩展serverProperties
,构建一个exportProperties
将再次执行上述行......所以它继续.
在不知道你想要实现什么的情况下,除了"不要那样做"之外,很难给出非常具体的帮助.我怀疑你不应该在这里使用继承.(目前尚不清楚为什么要扩展JPanel
...尝试优先考虑组合而不是继承.)
(您还应该修改您的类名以遵循Java约定......)