2016-09-06 12 views
-1

以下は私のハッシュマップです。ハッシュマップから整数への長さClassCastException

private HashMap<String, Integer> details; 
details = new HashMap<>(); 
details.put("coins", 0); 
details.put("score", 0); 
details.put("wins", 0); 

次は、今、私はこれを実行すると、私はClassCastExceptionを取得し、私のgetコイン法

public int getCoinCount() { 
    if(details == null) 
     return 0; 

    return details.get("coins").intValue(); 
} 

です。以下はそれを呼び出すコードです。

int coins = MyClass.getInstance().getCoinCount(); 

私は長い整数をキャストできません。長いタイプのことは決して言わなかった!何が起こっている?

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer 
at game.drew.com.respy.User.User.getCoinCount(RespyUser.java:78) 
at game.drew.com.game.Gameplay.ProfileFragment.onCreateView(ProfileFragment.java:226) 
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
+1

私たちに完全なスタックトレースをお願いできますか? – CodyEngel

+0

@HuskyHuskieがstacktraceを追加しました –

+0

getCoinCountはMyClassのメソッドです。 intを返します。メソッドの定義は上記です。 –

答えて

-2

私はあなたのスタックトレースが私に多くを与えることを望んでいた、残念ながら私はあなたのように困惑しています。これはあなたの問題に対する真の解決策ではありませんが、IntegerとしてHashMapに値を入れているのでgetCoinCountIntegerに返すように変更し、coinsIntegerに設定するのが最善の方法です。

これまで私がIntegerから原始的な値を得たとき、私はたいていそれをlongとして取得してしまいました。

関連する問題