我试图将一个long转换为int,但失败了。如果重要的话,我会在Google App Engine的Servlet中使用它。我已经对post1,post2 docs进行了搜索,但没有结果 从我的日志。指向这一行:
//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
答案 0 :(得分:3)
Long
和Integer
都延伸java.lang.Number
。
您希望如何将一个类转换为另一个不直接相关的类?您可以投射的是原始值
Integer i = (int) (myLong.longValue())
虽然在intValue()
中使用Long
方法会更容易。
答案 1 :(得分:0)
private Map<String, Object> mappings;
返回一个Object。因此解决方案是
long l = (Long) mappings.get(WinningSetMappingEnum.multiplyer
.toString());
multiplyer = (int) l;