からのオブジェクトが含まれているobjectA
からがあります。ClassA
List
ClassB
objectA
からアクセスできますobjectB
か?objectB.getListOwner()
つまり、を返すようなものがあるかどうかを尋ねていますobjectA
。
私は自分が作成するときにClassA
賛辞を持ってClassB
それを設定できることを知っていますが、もっと直接的なものがあるかどうか疑問に思っています。objectA
objectB
からのオブジェクトが含まれているobjectA
からがあります。ClassA
List
ClassB
objectA
からアクセスできますobjectB
か?objectB.getListOwner()
つまり、を返すようなものがあるかどうかを尋ねていますobjectA
。
私は自分が作成するときにClassA
賛辞を持ってClassB
それを設定できることを知っていますが、もっと直接的なものがあるかどうか疑問に思っています。objectA
objectB
直接または自動的にではありません。
あなたができることは、次のようなClassAのメソッドを持つことです。これが行うことはaddToList(ClassB objectB)
次のとおりです。
public void addToList(ClassB objectB)
{
objectB.setClassAOwner(this);
list.add(objectB);
}
そして、そのメソッドを使用して、ClassB
オブジェクトをのリストに追加しますClassA
。
明らかにClassB
、メソッドsetClassAOwner(ClassA owner)
とそれぞれのメンバー変数のClassA
所有者、そしておそらく一致するゲッターメソッドが必要ですgetClassAOwner()
このアプローチに関する小さなコメント。これにより、直接的な循環依存関係が発生します。これは、この質問の範囲外のさまざまな理由から、設計原則の観点からは望ましくない場合がほとんどです。しかし、それはあなたが望むものを達成します。
あなたが言っている場合:リストエントリにそれがどのリストから来たのか尋ねることはできますか?答えはノーです、あなたはできません、そのためにすぐに提供されるものは何もありません。オブジェクトは、それがどのリストにあるかを知りません(そして、それは複数のリストにあるか、まったくない可能性があります)。
例えば:
List list1 = new ArrayList();
list1.add(new Object());
list1.add(new Object());
list1.add(new Object());
for (Object o : list1) {
doSomething(o);
}
doSomething
渡されたオブジェクトがから来たことを理解する方法はありませんlist1
。そのための構造を自分で作成する必要があります。