classcastexception(两个后台报错ClassCastExceptionNoSuchFieldError)

被浏览:4532

关注者:636

最佳回答:

1、 错误:java.lang.ClassCastException, 强制类型转换错误。

我遇到的问题改成个demo

(List<E>) map.get(a); // key为a的value是List类,正常强转

map.put(a,"xx") ; // key为a的value变成了String

(List<E>)map.get(a); //异常

①、③行同样代码,但3出错,因为key为a的值类型变了,强转失败。

2、NoSuchFieldError

项目运行时,改方法内语句不用重启编译,改了方法名和类(实质.class文件变了)必须重启。

我改了一个枚举, 加了一个lastactionlog("lastactionlog")

public enum RESERVED_WORD{

lastactionlog("lastactionlog"),logList("logList");

}

这个不算改方法内语句,属于改“类”,枚举是一个特殊的类,改动后需要重新启动。

不然无法使用RESERVED_WORD.lastactionlog,会报: Caused by: java.lang.NoSuchFieldError:lastactionlog。就是说找不到字段lastactionlog,因为没编译呢。

需要重启时,可以看到debug窗口有提示may be out of synch,一般是编译的.class文件改变了。

alt="两个后台报错ClassCastException、NoSuchFieldError:" >

获赞数:314

收藏数:45

回答时间:2024-04-22 19:14:32