Getter总是返回Null Value

时间:2015-11-17 16:23:38

标签: java getter-setter

这是我的代码

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 !!!!!!为什么会这样..

4 个答案:

答案 0 :(得分: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());

但请确保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

答案 1 :(得分: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());
    }
}

答案 2 :(得分: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());

答案 3 :(得分:0)

这是因为您正在创建Entities.Users的新实例。 Entities.Users eu = new Entities.Users();创建一个新实例,此对象将与其他Users对象不同。

因此,如果要使用同一个对象,则需要将创建的对象传递给第二个位置。 或者将它保存在某个地方(db,file等)并从第二位调用持久化对象。