一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - 解決java.lang.ClassCastException的java類型轉換異常的問題

解決java.lang.ClassCastException的java類型轉換異常的問題

2020-09-29 00:33bdlaxx JAVA教程

這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉換異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在項目中,需要使用XStream將xml string轉成相應的對象,卻報出了java.lang.ClassCastException: com.model.test cannot be cast to com.model.test的錯誤。

原因:

項目中應該是采用了熱部署,devtools,因為累加載器的不同所以會導致類型轉換失敗

措施:

在pom.xml中將以下代碼注釋掉:

?
1
2
3
4
5
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <scope>runtime</scope>
</dependency>

補充知識:TreeSet在add對象時報ClassCastException錯誤

TreeSet實現了SortedSet接口,可以對集合中的對象進行排序,但是在使用TreeSet時要注意一點,那就是要給TreeSet傳遞一個比較器,也就是指定比較規則,否則的話,它就不知道誰大誰小,也就不能排序了。此時它會報一個ClassCastException的異常。

jdk1.6文檔里add方法關于這個異常是這樣描述的

Throws:

ClassCastException - if the specified object cannot be compared with the elements currently in this set

翻譯:ClassCastException - 如果指定的對象不能與當前在此集合中的元素進行比較

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class TreeSetTest
{
  public static void main(String[] args)
  {
    MyComparator comparator = new MyComparator();
 
  // TreeSet<Student> set = new TreeSet<Student>(comparator);
  // 錯誤的代碼,少了比較器,運行則報下面的異常。
    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
  //按分數高低比較,int為返回負數、零、整數,這里我寫的不咋好,但意思一樣
  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;
  }
}

錯誤的運行結果:

?
1
2
3
4
5
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類型轉換異常的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/mianyao1004/article/details/99738947

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美福利二区 | 亚洲精品国偷拍自产在线观看蜜臀 | 五月天色综合 | 成人男女啪啪免费观看网站 | 日本h乱淫动漫在线观看 | 久久精品国产亚洲AV天美18 | 亚洲AV精品一区二区三区不卡 | 放荡女小洁的性日记 | 亚洲网红精品大秀在线观看 | www.毛片在线观看 | 日本高清视频在线免费观看 | 欧美在线观看视频一区 | 暖暖视频高清图片免费完整版 | 经典三级四虎在线观看 | 美女脱了内裤张开腿亲吻男生 | 亚洲国产情侣偷自在线二页 | 午夜a一级毛片 | 高清在线免费 | 久久AV国产麻豆HD真实乱 | 蛮荒的童话未删减在线观看 | 免费看一级 | 国产最强大片免费视频 | 国产一级视频在线观看 | 精品亚洲欧美中文字幕在线看 | 国产ay | 国产精品猎奇系列在线观看 | 99国产自偷色久 | 欧美日韩国产亚洲人成 | 性生大片免费看 | www.尤物| 久久免费资源福利资源站 | 国产亚洲精品一区二区在线播放 | 免费看片黄色 | 嫩草影院永久在线一二三四 | 美女黑人做受xxxxxⅹ | 欧美福利二区 | 肉肉小说在线阅读 | 1769在线视频 | 国产精品午夜剧场 | 亚洲国产成人久久综合一 | 国产精品一区二区久久不卡 |