2012-07-26 127 views
7

這聽起來可能是一個奇怪的問題,但如何定義一個泛型,它必須擴展一個類並實現一個接口?我目前具有以下原型的通用功能:泛型擴展類AND implements接口

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 2012-07-26 15:24:27

+0

@corsiKa我也這麼認爲,但[在JLS中]找不到它(http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.4)。雖然它編譯。 – assylias 2012-07-26 15:25:30

+0

現在我擔心他們實際上做了兩件事... :-( – corsiKa 2012-07-26 15:27:36