好吧,很好。Java enum與類<T>實現接口返回類型
這裏是一個枚舉,它實現了一個接口,該接口使用一個返回'raw type'的方法,該方法在接口中給出了一個關於getCaste()
方法的警告。
public enum Thing implements HasCaste {
Type1 {
@Override
public Class getCaste() {
return String.class;
}
};
}
interface HasCaste {
public Class getCaste();
}
如果我更改接口的方法:
public <T> Class<T> getCaste();
它的變化對Type1
的方法簽名未經檢查的警告。如果我再改Type1.getCaste()
的簽字:
public <T> Class<T> getCaste()
然後返回有一個不兼容的類型錯誤,因爲Class<String>
不能轉換到Class<T>
。如果我然後將返回更改爲(Class<T>) String.class
,我們會收到未經檢查的投射警告。
有沒有辦法做到這一點沒有警告?
編輯:
對不起,我沒有在早期添加這一點,但它會是很好的做到這一點:
, Type2 {
@Override
public Class getCaste() {
return Integer.class;
}
};
相關:http://stackoverflow.com/questions/28234960/java-generics-and-enum-loss-of-template-parameters – Radiodef
要編輯,你不能使用枚舉。 – Radiodef
@Radiodef我實際上正在計劃連接這個問題:p(我是那個提問者) – EpicPandaForce