繁体   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