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]があります。これら2つのインスタンスを区別したいと思います。同じ物を持っているからですか?

My Lapseを更新します:

実際にはそうではref2ありませんrefref2設定していない値を取得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すべての内部オブジェクトも等しい場合は、との間が等しいのが普通refですref2。実装を使用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 に答える