3
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);

Myrefref2实例具有所有值 [ Credentials, Value, User and SomethingNew]。我想区分这两种情况。是因为它拿着同一个物体吗?

更新我的失误:

它实际上是ref2而不是ref。我得到了ref2我没有设置ref的值,并且也保存了我在ref2. 两者都在相同的上下文中。

4

2 回答 2

6

请注意,ref2您只是在创建对象,但您将值设置为ref. 你需要:

ClassName ref2 = new ClassName();
ref2.setVal(value);
ref2.setUser(user);
ref2.setSomethingNew(somethingNew);

请注意ref2更改而不是ref.

如果您ClassName正在覆盖该equals方法,并且所有内部对象也相等,则在 and 之间具有相等性是正常refref2。您可以使用Object.equals实现来检测对象是否不同(注意differentequal)。

于 2012-11-02T09:59:25.917 回答
3

如果您ref在创建后仍然设置,ref2这就是您应该期待的。做这个:

ref2.setVal(value);

注意:不要这样做:

ref.setCredentials(Credentials);

它将课程 Credentials设置为ref.

于 2012-11-02T09:59:18.500 回答