解决java.lang.ClassCastException的java类型转换异常的问题
在项目中,需要使用XStream将xmlstring转成相应的对象,却报出了java.lang.ClassCastException:com.model.testcannotbecasttocom.model.test的错误。
原因:
项目中应该是采用了热部署,devtools,因为累加载器的不同所以会导致类型转换失败
措施:
在pom.xml中将以下代码注释掉:
org.springframework.boot spring-boot-devtools runtime
补充知识:TreeSet在add对象时报ClassCastException错误
TreeSet实现了SortedSet接口,可以对集合中的对象进行排序,但是在使用TreeSet时要注意一点,那就是要给TreeSet传递一个比较器,也就是指定比较规则,否则的话,它就不知道谁大谁小,也就不能排序了。此时它会报一个ClassCastException的异常。
jdk1.6文档里add方法关于这个异常是这样描述的:
Throws:
ClassCastException-ifthespecifiedobjectcannotbecomparedwiththeelementscurrentlyinthisset
翻译:ClassCastException-如果指定的对象不能与当前在此集合中的元素进行比较
publicclassTreeSetTest { publicstaticvoidmain(String[]args) { MyComparatorcomparator=newMyComparator(); //TreeSetset=newTreeSet (comparator); //错误的代码,少了比较器,运行则报下面的异常。 TreeSet set=newTreeSet (); Students1=newStudent(50); Students2=newStudent(70); Students3=newStudent(40); set.add(s1); set.add(s2); set.add(s3); System.out.println(set); } } classStudent { intscore; publicStudent(intscore) { this.score=score; } @Override publicStringtoString() { //TODOAuto-generatedmethodstub returnString.valueOf(this.score); } } classMyComparatorimplementsComparator { @Override //按分数高低比较,int为返回负数、零、整数,这里我写的不咋好,但意思一样 publicintcompare(Studento1,Studento2) { //TODOAuto-generatedmethodstub intresult=0; if(o1.score>o2.score) { result=1; }else { result=-1; } returnresult; } }
错误的运行结果:
Exceptioninthread"main"java.lang.ClassCastException:com.shengsiyuan2.Studentcannotbecasttojava.lang.Comparable atjava.util.TreeMap.compare(TreeMap.java:1294) atjava.util.TreeMap.put(TreeMap.java:538) atjava.util.TreeSet.add(TreeSet.java:255) atcom.shengsiyuan2.TreeSetTest.main(TreeSetTest.java:17)
解决办法:
把TreeSetset=newTreeSet();改成:TreeSetset=newTreeSet(comparator);即可。
以上这篇解决java.lang.ClassCastException的java类型转换异常的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。