2
我有一個類EnumConverter<T extends Enum<?>>
,它將字符串轉換爲枚舉的正確枚舉常量T
(我不能使用Enum.valueOf
)。我建立這個類的實例的工廠方法是這樣的:具有泛型的靜態工廠方法
public static <T extends Enum<?>> EnumConverter<T> getInstance(Class<T> enumClass) {
return new EnumConverter<T>(enumClass.getEnumConstants());
}
這工作,但現在我想緩存EnumConverter
實例,以確保只有每個enum帶有Map
一個,即,我的問題是,如何申報Map
。我來最接近的是這樣的:
private static final Map<Class<?>, EnumConverter<? extends Enum<?>>>
,但我得到一個錯誤,如果我試圖從我的工廠方法返回從這個Map
值:
Type mismatch: cannot convert from EnumConverter<capture#1-of ? extends Enum<?>> to EnumConverter<T>
任何想法?
謝謝,這有效!但我仍然得到一個警告:'類型安全:從EnumConverter <捕獲#3的未檢查的轉換?將Enum >>擴展爲EnumConverter'。但由於類型擦除,這可能無法解決? –
hakos
2010-07-23 10:36:50
答案確實是'@SuppressWarnings(「unchecked」)':http://stackoverflow.com/questions/262367/type-safety-unchecked-cast – hakos 2010-07-23 10:51:03