2016-01-26 75 views
3

當我沒有泛型枚舉的運行時類型時,如何創建一個空的EnumSet?示例代碼:創建一個通用類型的枚舉集合

public class Utility<T extends Enum<T>> { 
    private T[] enumConstants; 
    public Utility(Class<T> e) { 
     enumConstants = e.getEnumConstants(); 
    } 
    private EnumSet<T> emptyEnumSet() { 
     // ? 
    } 
} 

這是我目前的解決方法,我認爲它來得有點笨拙:

private EnumSet<T> emptyEnumSet() { 
    T first = enumConstants[0]; 
    EnumSet<T> result = EnumSet.of(first); 
    result.remove(first); 
    return result; 
} 

回答

6

EnumSet.noneOf()應該做你所需要的。您的代碼收到Class<T>作爲構造函數參數,因此您需要將其存儲在一個字段中。

+0

哦,我想我對我的泛型類型參數感到困惑。它確實有效。 – steffen

相關問題