0

Javaでジェネリック型に複数のインターフェースを指定することは可能ですか?

具体的には、オブジェクト用の多数のインターフェイスを持つ既存のライブラリ (NASA World Wind) を使用しています。リストに保存したい一連の異種オブジェクトを扱っています。すべてのオブジェクトは複数のインターフェイスを実装しており、それぞれが私にとって便利です (特に、自己記述的な Movable と Renderable です)。

これを行うために欠落している構文がありますか、それとも許可されていませんか? 1 つを選択して、他のキャストにキャストする必要がありますか?

4

3 に答える 3

2

Angelika Langer の FAQ を見てください:ワイルドカード バウンドと型パラメーター バウンドの違いは何ですか? .

彼女は例を挙げます:

class Box< T extends Comparable<T> & Cloneable >  
    implements Comparable<Box<T>>, Cloneable {...}

ここでT extends Comparable<T> & Cloneableは、バインドされた型パラメーターであり、T比較可能で複製可能であると述べています。一般的な形式は次のとおりです。

TypeParameter extends Class & Interface1 & ... & InterfaceN

コンパイル後、型が消去されると、型パラメーターは最初の型に発展します。T上記は に消去されComparable<T>ます。

したがって、次のように書くとします。

public class HurricanePattern<T extends Movable & Renderable> {
    private T eye;
    // ...
}

型消去後の実行時の型はeyeですMovable

于 2013-05-15T15:59:39.747 に答える
0

いくつかのインターフェースを拡張するラッパーとして、独自のインターフェースを作成できます。

public MyInterface extends Comparable,Serializable,... {};
public class Foo<T extends MyInterface> {...}
于 2013-05-15T16:08:54.247 に答える