-1

我试图将 long 转换为 int,但失败了。如果这很重要,我会在 Google App Engine 的 Servlet 中使用。我已经对post1post2文档进行了搜索,但我的日志中没有结果。指向这一行:

//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

日志:

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

2 回答 2

3

两者LongInteger扩展java.lang.Number

你想如何将一个类转换为另一个不直接相关的类?您可以转换的是原始值

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

尽管intValue()Long.

于 2013-01-14T23:12:38.990 回答
0
private Map<String, Object> mappings;

返回一个对象。因此解决方案是

long l = (Long) mappings.get(WinningSetMappingEnum.multiplyer
                .toString());
        multiplyer = (int) l;
于 2013-03-16T16:13:06.843 回答