に私は、Javaのインターフェイスを持っている:方法で、一般的なパラメータで定義される一般的な復帰方法
public interface IElement{
public String getId();
public String getName();
/***
* adds an IElement to this elements children
* @param child
*/
void getAddChild(IElement child);
/***
* returns all children
* @return
*/
Collection<IElement> getChildren();
/***
* returns all children which match the Class of the passed IElement
* @param eType - the class type to match
*/
Collection<IElement> getChildren(Class<? extends IElement> eType);
}
アイデアはIElement
が、他のIElement
のコレクションが含まれていてもよいということです。
一致する兄弟のコレクションを返すには、Collection<IElement> getChildren(Class<? extends IElement> eType)
メソッドが必要です。
私はすべてがIElement
を拡張する3つのクラスを持っていたと言います。 一つRoom
と呼ばれていた、 他はBox
(box1
、box2
、box3
)と呼ばれていた、 、別のは、私は次の操作を行うことができますRoom
のインスタンスに今
Shelve
(shelve1
)
room1.addChildren(box1);
room1.addChildren(box2);
room1.addChildren(shelve1,sheleve2);
room1.addChildren(box3);
を
今私はそれに3つの異なるボックスとShelve
(shelve1
)とRoom
(room1
)があります。 Box
のオブジェクトは、Collection<IElement> getChildren(Class<? extends IElement> eType);
メソッド を使用してroom1.getChildren(Box.class)
のようにroom1
のすべてのオブジェクトを取得したいと考えています。ただし、メソッドはIElement
のコレクションのみを返します。私はそれがCollection<Box>
を返すことを望みます。 Shelve
を渡した場合は、Shelve
オブジェクトのコレクションを返す必要があります。
これは可能ですか?もしそうなら、あなたはどうやってそれをしますか? これは奇妙に思えますが、私は他のすべての要素を保持できる多くのオブジェクトを持っています。さまざまな種類のフィルタリングをすばやく簡単に行う必要があります。
あなたの 'getChildren'メソッドは、名前付きジェネリック型を持つ必要があります。例えば'コレクション getChildren(クラス eType)'。 –
khelwood