2012-07-26 28 views
7

これは奇妙な質問のように聞こえるかもしれませんが、どのようにクラスを拡張し、インターフェイスを実装する必要があるジェネリックを定義できますか?現在、次のプロトタイプの汎用関数を持っています。汎用拡張クラスANDインターフェイスを実装します

public static <E extends Enum<E>> List<E> buildEnumList(Class<E> enumClass) 

これは意図的に機能します。私の問題は、継承クラスを列挙型クラスにさらに制限し、特定のインターフェイスReadable(java.langではなく)を実装したいということです。ジェネリックは、それがインターフェイスを実装する必要があることを示すために、同じキーワードextendsを使用しているので、私は、以下の疑似動作を取得する方法を参照してくださいいけない:

public static <E extends Enum<E> implements Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) 

答えて

13

あなたはEまた、インターフェイスを実装する必要があることを示すために&を使用することができます。

public static <E extends Enum<E> & Readable> List<E> buildLexicographicalEnumList(Class<E> enumClass) { 
+0

コンマを使用して区切ることもできます。 – corsiKa

+0

@corsiKa私もそうだと思っていましたが、JLSで見つけられませんでした。それはコンパイルしますが。 – assylias

+0

私は実際には2つの異なることを心配しています:-( – corsiKa

関連する問題