2015-11-17 5 views
1

Ну это мой кодGetter всегда возвращает нулевое значение

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

Затем в другом месте на домашней странице я хочу это имя пользователя и тип пользователя, и я вызываю getter следующим образом:

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

Но это всегда с возвращением 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 и unType не NULL.


EDIT: Вы можете сделать что-то вроде следующего:

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..Только где-то в моем приложении я хочу, чтобы эти имя пользователя и тип пользователя ... Так что я должен сделать для этого, не создавая obj из класса Entities.Users ...! ! – 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(); создает новый экземпляр, и этот объект будет отличаться от других объектов Users.

Итак, если вы хотите использовать один и тот же объект, вам нужно либо передать тот, который был создан на второе место. Или сохраните его где-нибудь (db, файл и т. Д.) И вызовите сохраненный объект со второго места.

Смежные вопросы