2013-01-14 50 views
-1

我試圖將長整型轉換爲整型,但失敗。如果有問題,我在Google App Engine的Servlet中使用。我已經搜索到post1,post2docs但沒有結果 從我的日誌。指向此行:長整型拋出拋出ClassCastException

//fields 
private int multiplyer; 
private Map<String, Object> mappings; 



//the method 
     Echo.log.info("key: "+WinningSetMappingEnum.multiplyer.toString() 
     +" value: " 
     +mappings.get(WinningSetMappingEnum.multiplyer.toString()) 
     +" " 
     +mappings.get(WinningSetMappingEnum.multiplyer.toString()).getClass().getName() 
        );//For logging 

     multiplyer=(Integer)mappings.get(MappingEnum.multiplyer.toString());//PROBLEM 

LOG:

com.wtsang02.deserlizeMapping: key: multiplyer value: 0 java.lang.Long 
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer 
+1

鏈接的帖子怎麼沒有幫助你? –

+0

問題是map返回的Object,在原始問題中聲明,但代碼標記沒有顯示。解決方案是Object-> Long-> long-> int – wtsang02

+0

@PaulBellora它不是dup,即Long-> Integer。看到我以前的評論。 – wtsang02

回答

0
private Map<String, Object> mappings; 

返回一個Object。因此,解決方案是

long l = (Long) mappings.get(WinningSetMappingEnum.multiplyer 
       .toString()); 
     multiplyer = (int) l; 
3

兩個LongInteger延伸java.lang.Number

如何將一個類投射到另一個不直接相關的類?你可以投的原始值

Integer i = (int) (myLong.longValue()) 

雖然它會更容易使用intValue()方法Long

相關問題