1

からのオブジェクトが含まれているobjectAからがあります。ClassAListClassB

objectAからアクセスできますobjectBか?objectB.getListOwner()つまり、を返すようなものがあるかどうかを尋ねていますobjectA

私は自分が作成するときにClassA賛辞を持ってClassBそれを設定できることを知っていますが、もっと直接的なものがあるかどうか疑問に思っています。objectAobjectB

4

2 に答える 2

1

直接または自動的にではありません。

あなたができることは、次のようなClassAのメソッドを持つことです。これが行うことはaddToList(ClassB objectB) 次のとおりです。

public void addToList(ClassB objectB)
{
  objectB.setClassAOwner(this);
  list.add(objectB);
}

そして、そのメソッドを使用して、ClassBオブジェクトをのリストに追加しますClassA

明らかにClassB、メソッドsetClassAOwner(ClassA owner)とそれぞれのメンバー変数のClassA所有者、そしておそらく一致するゲッターメソッドが必要ですgetClassAOwner()

このアプローチに関する小さなコメント。これにより、直接的な循環依存関係が発生します。これは、この質問の範囲外のさまざまな理由から、設計原則の観点からは望ましくない場合がほとんどです。しかし、それはあなたが望むものを達成します。

于 2012-11-13T17:29:21.007 に答える
0

あなたが言っている場合:リストエントリにそれがどのリストから来たのか尋ねることはできますか?答えはノーです、あなたはできません、そのためにすぐに提供されるものは何もありません。オブジェクトは、それがどのリストにあるかを知りません(そして、それは複数のリストにあるか、まったくない可能性があります)。

例えば:

List list1 = new ArrayList();

list1.add(new Object());
list1.add(new Object());
list1.add(new Object());

for (Object o : list1) {
    doSomething(o);
}

doSomething渡されたオブジェクトがから来たことを理解する方法はありませんlist1。そのための構造を自分で作成する必要があります。

于 2012-11-13T17:26:50.980 に答える