关于父类和子类转换的问题

Passerby12138 2021-04-19 05:50:38
我现在有A1,A2,A3,A4四个类继承了A,然后我接参数会接收到A1~A4中任意一个类,所以我用A类接收了(此时参数是用请求的方式接收),然后我要对数据做处理,可能需要用到A1里面的属性,如果我直接用A点,是点不出来,就只能转换类型,强转又会报类造型异常,我现在能怎么做?
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2021-04-20
  • 打赏
  • 举报
回复
强行转换前用instaneof判断一下是不是A1类型 比如 if (p instanceof A1) {//p是A类型参数 System.out.println(((A1)p).xxx); //转换为A1访问xxx }
Passerby12138 2021-04-20
  • 打赏
  • 举报
回复
按照你说的第二种方法,我接收的参数就得先是json字符串,然后再去转换类型,这样的话我在父类对象中是有一个属性是专门用来判断是哪个子类的,所以这样的话,我就没办法使用了,最终只能接收两个参数,一个json字符串,还有一个用来判断是哪个子类的字段,是这个意思吗?
baichangda234 2021-04-20
  • 打赏
  • 举报
回复
不确定类型的建议使用map接收、如果非要转换成对象、让请求端多传一个参数类型(例如1、2、3、4) ,目的是告诉你是属于哪一个子类的 然后你自己判断这个参数反转成对应子对象、不过这样子需要你手动将json字符串转换对象 只有这两个方法
baichangda234 2021-04-20
  • 打赏
  • 举报
回复
楼上说的instanceof是处理普通方法调用的类型识别 如果你是用请求方式接收、拿spring来说,如果你用对象接收了一个json字符串、那么spring 会使用json序列化工具将对象反转为对象A 此时这个对象就是A的实例、强转会失败、而且子类多出来的属性会丢失(这是取决于json序列化方式)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧