簡體   English   中英

Getter值不斷返回空Java

[英]Getter value keeps returning null 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);

因為您在setAdmin()之前調用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()來設置admin。 您必須在構造函數中刪除Sysout

您的類構造函數在哪里初始化所有變量?

如果要忽略構造函數,請至少執行以下操作:

private Admin admin = new Admin();

出現nullPointerException的原因是,您嘗試訪問不存在的對象。


有關類和對象的速成課程:

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

上面沒有創建任何Admin對象。 它所做的是創建一個引用,該引用不指向任何內容(空)。

僅在使用new關鍵字時創建對象。

new Admin(); //Create an Admin Object

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

所以這就是問題所在。

private Admin admin;

admin未在任何地方初始化,因此其默認值為null。 由於您已經在構造函數內部調用了getAdmin() ,因此將在調用setAdmin(admin)之前執行它。

因此getAdmin()返回null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM