我试图通过使用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);
答案 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。