簡體   English   中英

Getter總是返回Null值

[英]Getter always return Null Value

好吧,這是我的代碼

package Entities;

public class Users {

     String user_name;
     String user_type;

    public void setName(String un, String type) {
        user_name = un;
        user_type = type;
    }
    public String getName(){

        return user_name;
    }
    public String getType(){
        return user_type;
    }

}

實際上這是一件基本的事情,很抱歉問你們。.在我的登錄界面中,我設置了用戶名和用戶類型

Entities.Users eu = new Entities.Users();
eu.setName(un, unType);

然后在主頁的其他地方,我想要這個用戶名和用戶類型,然后像這樣調用getter

Entities.Users eu = new Entities.Users();
System.out.println(eu.getName());
System.out.println(eu.getType());

但是它總是返回NULL !!!!!! 這是為什么..

問題是您正在打印之前創建user類的新對象:

Entities.Users eu = new Entities.Users();
System.out.println(eu.getName());
System.out.println(eu.getType());

這使得一個新的參考eu ,這樣的屬性eu

String user_name;
String user_type;

NULL

您應該執行以下操作:

Entities.Users eu = new Entities.Users();
eu.setName(un, unType);
System.out.println(eu.getName());
System.out.println(eu.getType());

但是請確保ununType不為NULL


編輯:您可以執行以下操作:

Entities.Users user_1 = new Entities.Users();
Entities.Users user_2 = new Entities.Users();
user_1.setName("user_1", "user_type_1");
user_2.setName("user_2", "user_type_2");
System.out.println(user_1.getName()); // user_1
System.out.println(user_2.getType()); // user_type_2

發生的情況是您正在創建Entities.Users類的新實例,並正在正確設置名稱。 但是,當您嘗試在班級的后面訪問它時,您正在創建一個不了解第一個實例的新實例。 試試這個

public class MyClass {
    private Entities.Users eu = new Entities.Users();

    private void myMethod() {
        //not sure where these two params come from
        eu.setName(un, unType);
    }

    private void myGetMethod() {
        System.out.println(eu.getName());
        System.out.println(eu.getType());
    }
}

您的代碼應如下所示..

Entities.Users eu = new Entities.Users();
eu.setName(un, unType);
//where un and unType should not be null
//because you did not expecting null 
//Example:
//eu.setName("Some Name", "Some Type");
System.out.println(eu.getName());
System.out.println(eu.getType());

這是因為您正在創建Entities.Users的新實例。 Entities.Users eu = new Entities.Users(); 創建一個新實例,該對象將與其他Users對象不同。

因此,如果要使用同一對象,則需要將創建的對象傳遞到第二位。 或者將其持久保存在某個地方(數據庫,文件等),然后從第二個位置調用持久保存的對象。

暫無
暫無

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

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