ClassCastException异常的出现原因和解决方法

ClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。在执行任何子系统的应用程序代码时都有可能发生ClassCastException异常。通过转换,可以指示Java编译器将给定类型的变量作为另一种变量来处理。对基础类型和用户定义类型都可以转换。Java语言规范定义了允许的转换,其中大多数可在编译时进行验证。不过,某些转换还需要运行时验证。如果在此运行时验证过程中检测到不兼容,JVM就会引发ClassCastException异常。
出现这个异常的原因如下:
1.一个类是数字类,而由于误操作,错误的将数字类向数字类转换改写成了数字类向字符串类的转换,从而产生了异常。
2.大部分原因是因为强制转换或者是SQL映射时发生了这个异常。
而我遇到的问题是:

1461:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '0x4c1ae77bc2df45fb68b13fa1b4f000305209b0cb' for key 'contract_address'

是因为sql映射出现了问题:
ClassCastException异常的出现原因和解决方法_第1张图片
这个是interface中
因为sql中返回的是一个 list的实体对象,而接收的则是一个List类型的参数。
虽然查询的时候没有报错,但是后续的时候遍历查找出来的结果就出错了。只要改成如下就可以了,一个非常大意的错误
ClassCastException异常的出现原因和解决方法_第2张图片
这样就可以了。

你可能感兴趣的:(java中级,解决方法,异常)