Getter值不断返回null Java

时间:2015-01-24 11:10:01

标签: java

我试图通过使用getter和setter方法传递对象。当我使用System.out.println(" test:" + this.admin)时,它可以工作;但是当我调用System.out.println时,我无法获取对象("为什么你不工作?!" + getAdmin());

以下是该计划的输出:

test: entity.account.Admin@18a607c2

WHY YOU ARE NOT WORKING?! null

管理主面板面板页面

 public class AdminMasterPanel extends JPanel {

    protected JFrame myFrame;

    private Admin admin;


    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
       this.admin = admin;
       System.out.println("test: "+this.admin);
    }


    /**
     * Create the panel.
     */
    public AdminMasterPanel(JFrame mf) {

       // Set the frame to the program
       myFrame = mf;
       setLayout(null);
       setBounds(0, 0, 1280, 720);

       System.out.println("WHY YOU ARE NOT WORKING?! "+getAdmin());


     }
}

从其他类调用setAdmin方法来设置管理对象:

AdminMasterPanel amp = new AdminMasterPanel(null); 
amp.setAdmin(admin);

3 个答案:

答案 0 :(得分:1)

因为您在getAdmin()之前致电setAdmin()。 您的构造函数甚至没有获得Admin对象。所以你基本上不用getAdmin()打电话。

你有什么是这个:

public AdminMasterPanel(JFrame mf, Admin admin) {

   // Set the frame to the program
   myFrame = mf;
   setLayout(null);
   setBounds(0, 0, 1280, 720);
   this.admin = admin;
   System.out.println("WHY YOU ARE NOT WORKING?! "+getAdmin());
 }

或者因为您似乎想要使用对象方法setAdmin()设置管理员。您必须删除构造函数中的Sysout

答案 1 :(得分:1)

你的类构造函数在哪里初始化所有变量?

如果你想省略构造函数,至少要这样做:

private Admin admin = new Admin();

您获得nullPointerException的原因是您尝试访问不存在的对象。


关于课程和课程的速成课程对象:

Admin admin; //Doing this DOES NOT create an object

以上内容不会创建任何Admin对象。它的作用是创建一个指向任何内容的引用(null)。

您只能在使用new关键字时创建对象。

new Admin(); //Create an Admin Object

Admin admin = new Admin();  //Create an Admin object and reference it with a  variable named "admin".

答案 2 :(得分:0)

所以这就是问题所在。

private Admin admin;

admin未在任何地方初始化,因此其默认值为null。 由于您在构造函数中调用了getAdmin(),因此在调用setAdmin(admin)之前执行它。

所以getAdmin()返回null。