Java Getter总是返回空值
这是我的密码Java Getter总是返回空值,java,getter-setter,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
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());
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
但是要确保un
和unType
不是NULL
编辑:您可以执行以下操作:
Entities.Users eu = new Entities.Users();
eu.setName(un, unType);
System.out.println(eu.getName());
System.out.println(eu.getType());
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=新实体.Users()代码>创建一个新实例,此对象将不同于其他用户对象
因此,如果要使用相同的对象,则需要将创建的对象传递到第二个位置。
或者将其持久化到某个位置(db、文件等),然后从第二个位置调用持久化对象。是否确定这些值不为null。。。您正在调用的eu.setName(un,unType)代码>使用检查您在此处传递的内容<代码>eu.setName(un,取消类型)
如果你要初始化一个新实例,你的用户名
将是null
如中所示,没有分配任何内容。在会话、请求或任何作用域中执行实例。看起来您正在创建一个新的Entities.Users eu=new Entities.Users()
,该实例没有设置值。当我在“setName()”中打印值时,它会显示值。。但是当它不返回任何内容时……让我们假设如下…………我通过setName方法存储登录表单中的用户名和用户类型……然后在我的应用程序的其他地方我想要这些用户名和用户类型。。。那么,如果不从Entities.Users类创建obj,我应该怎么做呢@JLink如果您有其他问题,您需要在单独的帖子中向他们提问。以后也尽量避免。始终解释您试图实现的目标,然后创建简化的示例。这个答案从问题的当前版本解释问题,所以请考虑接受它(或者你喜欢的其他答案)。请以编辑的部分为例。