java中ClassCastException类型转换异常(解决教程详解)_classcastexception 类型转换异常 java

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

*/
public class H5Teacher implements Teacher{

@Override
public String teach(String subject) {
    return subject + "学科讲师, 可以讲html, css, javascript";
}

}


4. 测试代码



package test;

package com.qf.test;

import com.qf.pojo.H5Teacher;
import com.qf.pojo.JavaTeacher;
import com.qf.pojo.Teacher;

/**

  • 测试类型转换异常

  • @author 千锋健哥
    */
    public class TestCastException {

    public static void main(String[] args) {
    Teacher teacher1 = new JavaTeacher();
    Teacher teacher2 = new H5Teacher();
    System.out.println(“" + teacher1.teach(“JavaEE”));
    System.out.println("
    ” + teacher2.teach(“H5”));

     //向下转型, 正常转型
     JavaTeacher javaTeacher = (JavaTeacher)teacher1;
     //向下转型, ClassCastException异常
     H5Teacher h5Teacher = (H5Teacher)teacher1;
    

    }
    }


5. 运行结果


![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fqf-java-wz.feishu.cn%2Fspace%2Fapi%2Fbox%2Fstream%2Fdownload%2Fasynccode%2F%3Fcode%3DMjI0ZTVlODNlYzg3M2Q0OTlkMGExNGUwNWM2MzllNGNfVE5vb3pRV1pPYW1wOWFFVHpndDVPbDFZZjhkUzRDVFFfVG9rZW46Ym94Y25Keld3aG1XNTE0bHlQSWxJVXN2VnplXzE2NzI3MzA1OTI6MTY3MjczNDE5Ml9WNA&pos_id=img-iIkhUXkP-1715536911579)


![](https://img-blog.csdnimg.cn/65fd7fd48f4c49e08d50d9d30afc8183.png)


 上面的代码运行后,就产生了如上图所示的类型转换异常,那么该问题是怎么产生的,又该怎么解决呢?我们继续往下看!


## **三. 异常原因**


**接下来健哥先来给各位小伙伴解释一下这个异常产生的原因:**


从上面我们设计的例子来看,java.lang.ClassCastException是进行强制类型转换时产生的异常。强制类型转换的前提是,父类引用指向的对象类型是子类时,才可以进行强制类型转换。所以如果父类引用指向的对象类型不是子类时,就会产生java.lang.ClassCastException异常。


例如 : JavaTeacher javaTeacher = (JavaTeacher)teacher1; 就可以正常转换,因为teacher1的类型就是JavaTeacher 类型。


H5Teacher h5Teacher = (H5Teacher)teacher1; 就会发生异常,因为teacher1是JavaTeacher类型,而不是H5Teacher 类型,类型不匹配,所以就会产生java.lang.ClassCastException异常。


现在你明白为什么会出现ClassCastException异常了吗?那又该如何解决呢?


## **四. 解决办法**


**既然问题的原因我们找到了,那么接下来就可以很容易地解决了:**


遇到这样异常的时候,如果你知道要访问对象的具体类型,直接转换成该类型即可;


例如 : H5Teacher h5Teacher = (H5Teacher)teacher1; 这句代码改为H5Teacher h5Teacher = (H5Teacher)teacher2 就可以了,因为 teacher2的类型就是H5Teacher 类型。


## **五. 结语**


所谓的ClassCastException类型转换异常,其实本质上就是被转换的类型不匹配,我们只需要直接将引用对象的类型和被转换的对象类型改成一致的类型,就可以完美解决了。 现在你明白了吗?如果你还有其他问题,可以在评论区留言或私信哦。


**这里为大家推荐一套Java入门全套视频教程(java核心技术,适合java零基础,Java自学必备),有需要的小伙伴可以去学习。**










**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值