-1

longをintにキャストしようとしましたが、失敗しました。それが重要な場合、私はGoogleAppEngineのサーブレットで使用しています。post1post2 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

ログ:

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 に答える