好的,对于Instance我有一个扩展JFrame的主类,如下所示;此类还创建另一个名为Adjust的类的对象。
public class Gui extends JFrame{
public Gui(){
... // There are some codes
Adjust adjust = new Adjust();
int length = adjust.getLength();
}
public static void main(String[] args){
Gui input = new Gui();
input.setVisible(true);
input.pack();
}
}
在Adjust Class中,我需要访问Gui类来获取一些信息才能生成getLength方法。为了做到这一点,我在Adjust类中创建了一个Gui类的对象,如下所示:
public class Adjust{
private int info;
public Adjust(){
Gui gui = new Gui();
this.info = gui.getInformation();
... // There are some additional codes
}
public int getLength(){
// in this method, I do some processes to provide the length based on information in gui
return ...
}
}
所以,在adjust类中,当我想访问Gui类时,这些类会在它们之间反复切换,而不会移动到下一行代码。我还将Adjust类扩展为Gui类,但它又发生了,类无限地在彼此之间切换。我不想在Gui类中创建静态实例和变量,以便在Adjust类中直接访问。请帮我解决问题所在?如果您觉得我的解释存在一些混淆,请告诉我是否可以做得更好。
以下是更多信息。 ==>我不想让第三个类组合其他两个类。 我想这样做的原因,因为我将使用其他类中的Adjust对象来访问基于Gui类中的信息创建的Adjust类中的getLength()方法。
答案 0 :(得分:4)
您已在GUI中调用了Adjust()函数
public Gui(){
... // There are some codes
Adjust adjust = new Adjust();
然后在Adjast再次调用Gui
public Adjust(){
Gui gui = new Gui();
this.info = gui.getInformation();
所以,它变成了一个无限的呼唤。
要解决此问题,您应该停止此类嵌套调用。
答案 1 :(得分:0)
您似乎可以将info
传递给Adjust
构造函数。这应该会打破这个循环。基本上,像
public class Gui extends JFrame{
public Gui(){
Adjust adjust = new Adjust(this.getInformation());
... // There are some codes
int length = adjust.getLength();
}
public static void main(String[] args){
Gui input = new Gui();
input.setVisible(true);
input.pack();
}
}
然后
public Adjust(int info) {
// Gui gui = new Gui();
// this.info = gui.getInformation();
this.info = info;