我有一个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