我試圖實例添加到以下EnumMap的:添加泛型類型,以EnumMap的
class ActiveG<D extends GData, T extends GTemplate> {
EnumMap<GStateType, GState<ActiveG<D,T>> map;
..
..
}
class TGData extends GData {...}
class TGTemplate extends GTemplate {....}
class ActiveTG extends ActiveG<TGData, TGTemplate> {
// fails with compilation error
super.states.put(GStateType.WAITING, new TGWaitingState<ActiveTG>(this));
...
...
}
的錯誤,我得到:
The method put(GStateType, GState<ActiveG<TGData,TGTemplate>>) in the
type EnumMap<GStateType,GState<ActiveG<TGData,TGTemplate>>> is not
applicable for the arguments (GStateType, TGWaitingState<ActiveTG>)
任何人都可以盡力幫助我弄清楚發生了什麼失蹤讓它起作用?? 謝謝!
'EnumMap'?你想做什麼?你在某處是否有一些'enum Long {}',或者你想在'EnumMap'中使用'java.lang.Long'作爲鍵?實際上,代碼示例沒有任何意義,因爲您調用了'super.states.put',但您向我們展示了'EnumMap <...> map'的聲明。請澄清併發布重現錯誤的正確代碼。 http://stackoverflow.com/help/mcve –
Radiodef
當然...你的地圖不是GStateType,TGWaitingState類型:)。您已將地圖定義爲Long,GState <...>,其中GStateType和TGWaitingState <>是什麼? –
jiveturkey
對不起,做了一個壞的複製粘貼 - 現在看看它。順便說一句,TGWaitingState繼承了GState。 – Shvalb