欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Java中java.lang.ClassCastException异常原因及解决方法

时间:2022-07-09 09:36:53|栏目:JAVA代码|点击:

通常我们在 OOP 设计中都会使用到继承。

Java 继承关系中的 java.lang.ClassCastException 错误_java

??但是在继承对象之间的强制转换可能会遇到??java.lang.ClassCastException??异常的错误。

错误的日志如下:

19:58:25.010 [http-nio-8080-exec-5] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: class com.ossez.usreio.mls.common.models.response.ListingResponse cannot be cast to class com.ossez.usreio.mls.common.models.response.ListingDetailResponse (com.ossez.usreio.mls.common.models.response.ListingResponse and com.ossez.usreio.mls.common.models.response.ListingDetailResponse are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @4ee285c6)] with root cause
java.lang.ClassCastException: class com.ossez.usreio.mls.common.models.response.ListingResponse cannot be cast to class com.ossez.usreio.mls.common.models.response.ListingDetailResponse (com.ossez.usreio.mls.common.models.response.ListingResponse and com.ossez.usreio.mls.common.models.response.ListingDetailResponse are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @4ee285c6)

Java 继承关系中的 java.lang.ClassCastException 错误_父类_02

??问题和原因

这个问题出现的原因就是继承类之间强制转换的错误。

同时这个错误是运行时错误,不是编译错误,因此你编译的时候是没有这个错误的。

考察下面的代码:

Parent b = new parent();
Child c = (Child) b ;

采用该方法不能实现对象类型由超类向子类的转换。

上面的原因是父类的对象是由父类创建的,然后你尝试将父类创建的对象强制转换到子类中。

因为父类创建的对象和子类需要创建的对象分别使用不同的地址空间,那在转换的时候将会出现地址空间引用的错误,因此 JVM 会认为你将 2 个完全不同类型的对象进行转换,这个时候出现上面的运行时错误。

要解决这个问题的办法就是在创建父类的时候使用子类来创建,并且强制将创建的父类转换为子类就可以了。

使用这种创建方法就能保证使用相同的地址空间。

将上面的语句改成:

Parent b = new Child ();
Child c = (Child) b ;

就可以了。

总结

上一篇:java process.waitfor返回1的原因及解决

栏    目:JAVA代码

下一篇:java 模仿拼多多红包递减算法的实现

本文标题:Java中java.lang.ClassCastException异常原因及解决方法

本文地址:http://www.codeinn.net/misctech/207303.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有