Java 如何正确编码以在单独的对象中保持唯一属性

Java 如何正确编码以在单独的对象中保持唯一属性,java,object,attributes,unique,Java,Object,Attributes,Unique,我在user.java public class User(){ string fname; string lname; string email; public User(){ this.fname = randomCharGenMethod(); this.lname = randomCharGenMethod(); this.email = randomCharGenMethod(); } } 在另

我在
user.java

public class User(){

    string fname;
    string lname;
    string email;

    public User(){
        this.fname = randomCharGenMethod();
        this.lname = randomCharGenMethod();
        this.email = randomCharGenMethod();
   }
}
在另一个java类中,我创建了以下对象

static User user1 = new User();
static User user2 = new User();
当我继续创建对象时,它们都具有相同的
fname
lname
email


实际上,我希望它们具有唯一的
fname
lname
email
,因为它们是从字符串生成方法生成的

是否有任何特定的原因将User1、User2声明为静态的?当您处理静态变量时,您应该记住它们是在实例之前加载的,并带有它们的值

将此代码作为一个更简单的示例:

public class User() {
static string fname;
static string lname;
static string email;

public User() {
    this.fname = randomCharGenMethod();
    this.lname = randomCharGenMethod();
    this.email = randomCharGenMethod();
 }
} 
User
的任何新实例都将共享相同的fname、lname和email值,因为它们是在任何实例化之前加载的


考虑到这一点,如果user1、user2不是静态的,那么它们可以保存单独生成的值

我想我们还需要看看
randomCharGenMethod
源代码,它可以很好地工作公共静态字符串randomCharGenMethod(){return RandomStringUtils.randomAlphabic(5);}如果使用
String
,这个编译过程如何?是自定义类型吗?我使用了字符串很抱歉输入错误,我不能确定,因为您没有共享
randomCharGenMethod()
,但我猜这是您的问题