关于父类和子类转换的问题
我现在有A1,A2,A3,A4四个类继承了A,然后我接参数会接收到A1~A4中任意一个类,所以我用A类接收了(此时参数是用请求的方式接收),然后我要对数据做处理,可能需要用到A1里面的属性,如果我直接用A点,是点不出来,就只能转换类型,强转又会报类造型异常,我现在能怎么做?强行转换前用instaneof判断一下是不是A1类型
比如
if (p instanceof A1) {//p是A类型参数
System.out.println(((A1)p).xxx); //转换为A1访问xxx
} 楼上说的instanceof是处理普通方法调用的类型识别
如果你是用请求方式接收、拿spring来说,如果你用对象接收了一个json字符串、那么spring 会使用json序列化工具将对象反转为对象A
此时这个对象就是A的实例、强转会失败、而且子类多出来的属性会丢失(这是取决于json序列化方式)
不确定类型的建议使用map接收、如果非要转换成对象、让请求端多传一个参数类型(例如1、2、3、4) ,目的是告诉你是属于哪一个子类的
然后你自己判断这个参数反转成对应子对象、不过这样子需要你手动将json字符串转换对象
只有这两个方法 根据您提到的第二种方法,我必须接收一个JSON字符串作为参数,然后将其转换为类型。通过这种方式,我在超类对象中有一个属性,用于确定它是哪个子类,所以我不能使用它,我最终只能接收两个参数,一个JSON字符串。还有一个字段用于确定它是哪个子类。是这个意思吗?
页:
[1]