Java无限地在类之间切换,为什么?

时间:2014-11-03 02:55:33

标签: java swing user-interface awt

好的,对于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()方法。

2 个答案:

答案 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;