上下转型报错问题:entity.Employee cannot be cast to java.lang.Long 异常为ClassCastException

当直接在idea运行程序时,不显示报错,但是在前端运行一下,就开始显示如下报错

这是因为上下转型不对的问题,导致的异常,对应代码如下:

Long empId = (Long) request.getSession().getAttribute("employee");

这一句,这里面为什么存在上下转型异常嘞,这是因为调用的方法

getAttribute类型为object,这时候我们需要知道

Object对象:

在Java中,Object类是最基本的类,所有其他的类都是直接或间接地继承自Object类。这意味着,Java中的每一个类,即使没有显式地继承任何类,实际上都继承了Object类。

 object类是所有类的根类,每个类都直接或间接地继承自object类。

那什么是上下转型嘞:

在面向对象的编程语言中,如Java,上下转型是指在继承关系中的对象引用类型转换。这种转换主要分为两种:上转型(Upcasting)和下转型(Downcasting)。下面详细介绍这两种类型:

上转型(Upcasting)

上转型指的是将子类的对象引用赋值给父类的引用变量,这是自动发生的,不需要显式的类型转换。这是因为子类对象可以被视为父类对象的一种,因为它继承了父类的所有属性和方法。上转型是安全的,因为它只是将子类对象的引用赋值给父类引用,不会改变对象的实质。

下转型(Downcasting)

下转型是指将父类的引用转换为子类的引用。这需要显式的类型转换,因为父类的引用可能实际上引用的是父类本身或其他子类的对象,而不仅仅是特定的子类对象。下转型需要小心处理,因为它可能导致ClassCastException,如果引用的实际对象不是预期的子类类型。必须要进行强制转型。

所有这个报错的问题就是没有对对象进行强制转型,要去父类调用方法

将代码那一句修改为

Long empId = ((Employee) request.getSession().getAttribute("employee")).getId();

这句话进行分解就相当于代码:

Employee emp = ((Employee) request.getSession().getAttribute("employee"));
Long empId=emp.getId();

将要获取的值进行强制转型以后,再进行调用,这样修改以后再运行结果:

运行成功啦,这时候看数据库就会发现员工信息已保存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值