【问题标题】:How to pass class object to another class that is using super();如何将类对象传递给另一个使用 super() 的类;
【发布时间】:2014-10-19 02:59:01
【问题描述】:

我已经工作了一整天了,所以这可能是没有道理的,但我疲惫的大脑却看不到它。如果是这样的话,对不起这个愚蠢的问题。现在,我的问题。

我希望我的 Gui 班级能够访问班级 Validator。在创建所有类的main 类中,创建了GuiValidate 类。

像这样:

public class Main{

    public static void main(String[] args){
        Gui gui = new Gui();
        Validate validate = new Validate();
    }   

}

现在,我希望我的 Gui 类能够访问 Validate 类并能够访问其方法。

这是我的 Gui 类构造函数:

public class Gui extends JFrame implements ActionListener{

//A list of variables here...

public Gui(){

    super("BANK");

    //rest of the constructor.

现在,我如何让我的Gui 类在使用super(); 时访问validate

【问题讨论】:

  • 在使用super()?这个问题有点不清楚。
  • 如果您控制GUI,那么您可以添加一个接受Validate 实例并首先在其中调用this() 的新构造函数,或者提供一个允许您提供实例的setter 方法Validate...
  • 你可以把Validate交给你的Gui构造函数,但是super()JFrame的构造函数,所以它不会知道或关心Validate。跨度>
  • 谢谢大家,我想我现在明白了。我的大脑又累又炸。

标签: java swing user-interface main


【解决方案1】:

你可以试试这样的:

public class Gui extends JFrame implements ActionListener{
    private Validate validate;
    public Gui(Validate validate){
        super();
        this.validate = validate;
        //rest of the constructor.
    }
    ...
}

    public class Main{

        public static void main(String[] args) {
            Validate validate = new Validate();
            Gui gui = new Gui(validate);
        }
    }

【讨论】:

  • 哦,所以可以这样做。我不确定在使用 super() 时是否可以做到这一点;谢谢。我的大脑被炸了。
【解决方案2】:

您无法从该类控制 super 所做的事情,因此您要么将其作为参数传递给构造函数并将其保存在变量中,要么将 validate 设为静态以便每个人都可以访问它(虽然不推荐,您只会能够拥有它的一个实例)。

public class Main{

    public static void main(String[] args){
        Validate validate = new Validate();
        Gui gui = new Gui(validate);
    }   

}

public class Gui extends JFrame implements ActionListener{

//A list of variables here...
private Validate validate;

public Gui(Validate val){

    super("BANK");
    validate = val;

    //rest of the constructor.
}

这样 Gui 有一个 validate 引用,可以访问任何公共方法和变量。

【讨论】:

    【解决方案3】:

    如果你的意思是super() 在这条线上super("BANK");,那么你不能,这个super("BANK") 指的是JFrame 的构造函数,因为你的Gui 类正在扩展JFrame。它只接受String title 和/或GraphicConfiguration gc 的参数。

    你需要修改你的构造函数:

     private Validate validate;
     public Gui(Validate validate){
        super("BANK"); // this super refers to JFrame constructor
        this.validate = validate;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2022-12-04
      • 1970-01-01
      • 2017-03-04
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多