解决java.lang.ClassCastException的java类型转换异常的问题

 更新时间:2020年09月28日 10:22:54   作者:bdlaxx  
这篇文章主要介绍了解决java.lang.ClassCastException的java类型转换异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在项目中,需要使用XStream将xml string转成相应的对象,却报出了java.lang.ClassCastException: com.model.test cannot be cast to com.model.test的错误。

原因:

项目中应该是采用了热部署,devtools,因为累加载器的不同所以会导致类型转换失败

措施:

在pom.xml中将以下代码注释掉:

<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 - 如果指定的对象不能与当前在此集合中的元素进行比较

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;
  }
}

错误的运行结果:

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类型转换异常的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java之CountDownLatch原理全面解析

    Java之CountDownLatch原理全面解析

    这篇文章主要介绍了Java之CountDownLatch原理解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java 正则表达式入门详解(基础进阶)

    Java 正则表达式入门详解(基础进阶)

    最近看到很多同学想要学习java正则表达式的一些知识,那么脚本之家小编就为大家介绍一下,其实正则表达式实用性很强,处理大幅文字的时候都需要用得到,语法也大同小异
    2017-10-10
  • Java过滤器@WebFilter用法详解

    Java过滤器@WebFilter用法详解

    @WebFilter用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器,这篇文章主要给大家介绍了关于Java过滤器@WebFilter用法的相关资料,需要的朋友可以参考下
    2024-01-01
  • Spring Cloud Eureka基础应用及原理

    Spring Cloud Eureka基础应用及原理

    这篇文章主要介绍了Spring Cloud Eureka基础应用,Eureka Client中内置一个负载均衡器,用来进行基本的负载均衡,下面我们将通过搭建一个简单的Eureka例子来了解Eureka的运作原理,感兴趣的朋友一起看看吧
    2022-05-05
  • spring boot使用properties定义短信模板的方法教程

    spring boot使用properties定义短信模板的方法教程

    这篇文章主要给大家介绍了关于spring boot使用properties定义短信模板的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • 基于Spring定时任务的fixedRate和fixedDelay的区别

    基于Spring定时任务的fixedRate和fixedDelay的区别

    这篇文章主要介绍了基于Spring定时任务的fixedRate和fixedDelay的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java深入讲解异常处理try catch的使用

    Java深入讲解异常处理try catch的使用

    这篇文章主要介绍了Java异常处理机制try catch流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-06-06
  • SpringBoot使用log4j2将日志记录到文件及自定义数据库的配置方法

    SpringBoot使用log4j2将日志记录到文件及自定义数据库的配置方法

    这篇文章主要介绍了SpringBoot使用log4j2将日志记录到文件及自定义数据库的配置方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Java switch()括号内参数的类型要求详解

    Java switch()括号内参数的类型要求详解

    这篇文章主要介绍了Java switch()括号内参数的类型要求,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java.lang.Void 与 void的比较及使用方法介绍

    java.lang.Void 与 void的比较及使用方法介绍

    这篇文章主要介绍了java.lang.Void 与 void的比较及使用方法介绍,小编觉得挺不错的,这里给大家分享一下,需要的朋友可以参考。
    2017-10-10

最新评论