2015-11-17 114 views
1

嗯,這是我的代碼消氣總是返回空值

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; 
    } 

} 

其實這是一個基本的東西,對不起,問你guys..In我的登錄界面我設定的用戶名和用戶類型

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

然後在主頁的其他地方我想要這個用戶名和用戶類型,我打電話給這樣的吸氣劑

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

但它總是s返回NULL !!!!!!這是爲什麼..

+0

你確定這些值不爲空...你調用'eu.setName(un,unType);'用 – 3kings

+0

檢查你在這裏傳入什麼......'eu.setName(un,unType );' –

+0

那麼,如果你要初始化一個新的實例,你的'user_name'將是'null',因爲沒有分配任何東西。通過會話,請求或任何範圍攜帶實例。 – Mena

回答

2

的問題是在打印前要創建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()); 

但要確保un,並unTypeNULL


編輯:你可以做類似如下:

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 
+0

讓我們假設這樣..........我通過setName方法從我的登錄表單中存儲用戶名和用戶類型..然後在我的應用程序中的其他地方我想要那些用戶名和用戶類型...那麼我應該怎麼做,而不需要從Entities.Users類創建obj ...! ! – JLink

+1

@JLink如果您有其他問題,您需要在單獨的帖子中提問。此外,請儘量避免[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。總是解釋你想要達到的目標,然後創建簡化的例子。這個答案解釋了當前版本問題的問題,所以請考慮接受它(或其他你喜歡的答案)。 – Pshemo

+0

您應該將不同的_user_對象的引用彼此分開。請參閱編輯部分。 –

0

發生了什麼事是你創建的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()); 
    } 
} 
0

您的代碼應該是這樣..

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()); 
0

這是因爲要創建Entities.Users的新實例。 Entities.Users eu = new Entities.Users();創建一個新實例,並且此對象將與其他用戶對象不同。

所以,如果你想使用同一個對象,你需要通過創建的第二個地方。 或者將它保存在某處(db,file等)並從第二個地方調用持久化對象。