解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題
在項目中,需要使用XStream將xml string轉(zhuǎn)成相應(yīng)的對象,卻報出了java.lang.ClassCastException: com.model.test cannot be cast to com.model.test的錯誤。
原因:
項目中應(yīng)該是采用了熱部署,devtools,因?yàn)槔奂虞d器的不同所以會導(dǎo)致類型轉(zhuǎn)換失敗
措施:
在pom.xml中將以下代碼注釋掉:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
補(bǔ)充知識:TreeSet在add對象時報ClassCastException錯誤
TreeSet實(shí)現(xiàn)了SortedSet接口,可以對集合中的對象進(jìn)行排序,但是在使用TreeSet時要注意一點(diǎn),那就是要給TreeSet傳遞一個比較器,也就是指定比較規(guī)則,否則的話,它就不知道誰大誰小,也就不能排序了。此時它會報一個ClassCastException的異常。
jdk1.6文檔里add方法關(guān)于這個異常是這樣描述的:
Throws:
ClassCastException - if the specified object cannot be compared with the elements currently in this set
翻譯:ClassCastException - 如果指定的對象不能與當(dāng)前在此集合中的元素進(jìn)行比較
public class TreeSetTest
{
public static void main(String[] args)
{
MyComparator comparator = new MyComparator();
// TreeSet<Student> set = new TreeSet<Student>(comparator);
// 錯誤的代碼,少了比較器,運(yùn)行則報下面的異常。
TreeSet<Student> set = new TreeSet<Student>();
Student s1 = new Student(50);
Student s2 = new Student(70);
Student s3 = new Student(40);
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set);
}
}
class Student
{
int score;
public Student(int score)
{
this.score = score;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
return String.valueOf(this.score);
}
}
class MyComparator implements Comparator<Student>
{
@Override
//按分?jǐn)?shù)高低比較,int為返回負(fù)數(shù)、零、整數(shù),這里我寫的不咋好,但意思一樣
public int compare(Student o1, Student o2)
{
// TODO Auto-generated method stub
int result = 0;
if(o1.score > o2.score)
{
result = 1;
}else
{
result = -1;
}
return result;
}
}
錯誤的運(yùn)行結(jié)果:
Exception in thread "main" java.lang.ClassCastException: com.shengsiyuan2.Student cannot be cast to java.lang.Comparable at java.util.TreeMap.compare(TreeMap.java:1294) at java.util.TreeMap.put(TreeMap.java:538) at java.util.TreeSet.add(TreeSet.java:255) at com.shengsiyuan2.TreeSetTest.main(TreeSetTest.java:17)
解決辦法:
把 TreeSet set = new TreeSet(); 改成:TreeSet set = new TreeSet(comparator);即可。
以上這篇解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot URL帶有特殊字符([]/{}等),報400錯誤的解決
這篇文章主要介紹了SpringBoot URL帶有特殊字符([]/{}等),報400錯誤的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Java棧之鏈?zhǔn)綏4鎯Y(jié)構(gòu)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java棧之鏈?zhǔn)綏4鎯Y(jié)構(gòu)的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
SpringBoot在IDEA中實(shí)現(xiàn)熱部署(JRebel實(shí)用版)
這篇文章主要介紹了SpringBoot在IDEA中實(shí)現(xiàn)熱部署(JRebel實(shí)用版),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
mongo分布式鎖Java實(shí)現(xiàn)方法(推薦)
下面小編就為大家?guī)硪黄猰ongo分布式鎖Java實(shí)現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07

