2017-07-19 20 views
-1

エンティティと呼ばれるインタフェースがあると仮定すると、それを実装する多くのクラスがあります。 クラスを作成する必要があります。そのクラスのインスタンスごとに、コレクションにはインタフェースEntityを実装するオブジェクトのみが含まれますが、から同じ実装クラスになります。たとえば、PersonとBicycleがEntityインタフェースを実装し、クラスのインスタンスは、PersonオブジェクトまたはBicycleオブジェクトでのみフルコレクションを持ちますが、両方ではありません。 私はあなたの助けに感謝します!インターフェイスを実装するが、同じ実装クラスのオブジェクトのみを含むコレクションを強制する方法は?

+0

「コレクション theCollection」(コレクション ... ')!?本当に、あなたの質問はいくぶん不明です。 – Seelenvirtuose

+0

Javaの型システムではできません(リストのすべてが、その型のサブクラスではなく、厳密な型であることを保証することはできませんが、設計では必要ありません)。実行時にリスト内のインスタンスのタイプを確認するだけで済みます。 –

+0

複数の境界( '')を持つ境界型を宣言することはできますが、実際にはその点は表示されません。いくつかのコードを共有できますか? –

答えて

0
public class Something<T extends Entity> { 
[...] 
private Collection<T> entities; 

T常にEntityを実装する一つのクラスになります。このクラスのすべてのメソッドでTを使用できます。

0

これを本当に行いたい場合は、独自の関数を作成して、新しいオブジェクトのクラスとコレクション内の最初のオブジェクトのクラスを比較することができます。 (あなたのコレクションにオブジェクトがなくても、それを追加するだけの場合)

void add(Entity ent) { 
    if (collection == null) { 
     collection = new Collection<Entity>(); 
     collection.add(ent); 
    } 
    else if(ent.getClass().equals(collection.get(0).getClass()) { 
     collection.add(ent); 
    } 
    else { 
     // wrong class error handling here 
    } 
} 

そういうものです。

+0

いくつかのサンプルコードを提供していただけますか? – WhatsThePoint

関連する問題