2016-11-18 116 views
0

IM仍然在使用具有一個問題,仿製藥和IM相當薄弱: 基於以下方法我想initalize列表:的Java:列表初始化泛型(T擴展Enum <T>&AnyInterface)

public <T extends Enum<T> & AnyInterface> boolean getIsDescSort(Class<T> tableSortEnum) { 
     return tableSortEnum.getName().endsWith(DESC_SUFFIX); 
} 

(通常情況下)是否可以用這些類型的對象來初始化一個List?或換句話說:我可以用這些信息鍵入我的列表嗎?實現某個接口的枚舉?

List<T extends Enum<T> & AnyInterface> myList; 

在我的Eclipse IDE中顯示了幾個錯誤,所以我認爲它不會編譯。 我看了一些關於這方面的文章,但是如果在初始化一個集合的時候甚至不允許這樣做,那麼就不會得到...

+2

「不工作」大約是有幫助的,好像我是用「是有可能」來回答你。 – Kayaman

+0

'T擴展枚舉&AnyInterface'是一個「交集類型」。這真是先進的東西。 – tbsalling

回答

2

你試圖在錯誤的地方輸入。例如,下面的工作就好了

public class Foo<T extends Enum<T> & AnyInterface> { 
    private List<T> foo; 
} 

正如本

public static <T extends Enum<T> & AnyInterface> List<T> foo(Class<T> clazz) { 
    ArrayList<T> foo = new ArrayList<>(); 
    return foo; 
}