我有一个HashMap<Integer, Object>并且我有一个getter函数,例如:

public Boolean getBoolean(int index){
     return (boolean) watcherMap.get(index);
}


调用此类时,出现此错误

Exception in thread "Thread-0" java.lang.ClassCastException: java.lang.String cannot be cast to
java.lang.Boolean
at com.vobis.onebullet.entity.DataWatcher.getBoolean(DataWatcher.java:36)
at com.vobis.onebullet.entity.Entity.updateLocally(Entity.java:91)
at com.vobis.onebullet.level.Level.updateLevel(Level.java:149)
at com.vobis.onebullet.OneBullet.loop(OneBullet.java:264)
at com.vobis.onebullet.OneBullet.start(OneBullet.java:228)
at com.vobis.onebullet.OneBullet.run(OneBullet.java:125)
at java.lang.Thread.run(Unknown Source)


但是我没有在那个函数中的任何地方将字符串转换为布尔值吗?我正在将布尔值转换为对象!

最佳答案

您正在将一个对象强制转换为布尔值,并且该对象是java.lang.String的实例。
这意味着您在某个地方放了

watcherMap.put(someInteger,"SomeString");
getBoolean(someInteger);


这将抛出一个ClassCastException

10-04 20:41