Hashmap Long to Integer ClassCastException

时间:2016-09-06 00:44:24

标签: java android casting hashmap

以下是我的hashmap。

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

以下是我的获取硬币方法

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

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

现在,当我运行这个时,我得到一个ClassCastException。以下是调用它的代码。

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 个答案:

答案 0 :(得分:-2)

我希望你的堆栈跟踪可以让我更多地离开,不幸的是我和你一样困惑。这不是对您的问题的正确解决方法,但由于您将值放在class InReader(permissions.IsAuthenticated): def has_object_permission(self, request, view, obj): return request.user in obj.reading HashMap之内,因此最好更改Integer以返回getCoinCount 1}}并将Integer设置为coins

过去当我从Integer获得原始值时,我通常最终会将其检索为Integer