ClassName ref = new ClassName();
ref.setCredentials(Credentials);
ref.setVal(value);
ref.setUser(user);
现在,当我创建一个具有相同类引用的新对象时,我仍然可以获得之前设置的值。为什么会这样?
ClassName ref2 = new ClassName();
ref2.setVal(value);
ref2.setUser(user);
ref2.setSomethingNew(somethingNew);
我的ref
和ref2
个实例拥有所有值[Credentials, Value, User and SomethingNew
]。我想区分这两个实例。是因为它持有相同的物体吗?
更新我的失效:
实际上是ref2
而不是ref
。我得到ref2
中未设置的值,ref
也包含我在ref2
实例中设置的值。两者都在相同的背景下。
答案 0 :(得分:6)
请注意,对于ref2
,您只是创建对象,但是您将值设置为ref
。你需要:
ClassName ref2 = new ClassName();
ref2.setVal(value);
ref2.setUser(user);
ref2.setSomethingNew(somethingNew);
请注意ref2
更改而不是ref
。
如果ClassName
覆盖了equals
方法,并且所有内部对象也相同,则ref
和ref2
之间的相等是正常的。您可以使用Object.equals
实施来检测对象是否不同(请注意different
与equal
)。
答案 1 :(得分:3)
如果您在创建ref
之后设置ref2
,这就是您应该期待的。这样做:
ref2.setVal(value);
注意:请勿这样做:
ref.setCredentials(Credentials);
它会在Credentials
上设置类 ref
。