[英]Create subclass object from another subclass object
共有三堂课。 其中之一是父类,其他是子类。 例如:
家长班: Parent
子类: SubClass1, SubClass2
我的问题是,如何在没有类型转换异常的情况下将SubClass1对象转换为SubClass2对象?
除非您在它们之间创建is-a关系,否则您就不能这样做。 兄弟类型实例不能彼此转换。
你将不得不做以下事情:
SubClass2 extends Parent
SubClass1 extends Subclass2
现在两者都继承自Parent
,您可以编写
Subclass2 obj = new Subclass1();
或相反。
其实有可能! 如果您不在乎新对象中的数据丢失 。
class Parent{
String A;
String B;
public String getA();
public String setA();
public String getB();
public String setB();
}
class SubClass1 extend Parent{
String C;
public String getC();
public String setC();
}
class SubClass1 extend Parent{
String D;
public String getD();
public String setD();
}
public SubClass1 convertTOSubClass2(SubClass2 obj2){
SubClass1 obj1 = new SubClass1();
obj1.setA(obj2.getA());
obj1.setB(obj2.getB());
...
return obj1;
}
在这种情况下,我们只需忽略C和D即可 。 我认为可以设置几个字段(A,B),但是对于许多字段(AZ)甚至对父级都有很多字段的父级都没有好处。
我也在寻找更好/优雅的解决方案 ,例如“ 复制父类对象的所有字段 ”,因为有时我们确实想重用现有对象的数据。
==更新==
Apache BeanUtils :copyProperties(Object,Object)可能会有所帮助。
您不能这样做,因为SubClass1
可能具有SubClass2
没有的成员, SubClass2
。
假设父级是Fruit
,子类是Banana
和Apple
。 您在问如何将Banana
制成Apple
? 你不能。 香蕉不是苹果。 唯一的例外是告诉您。
您可以伪造编译器,但可以确保运行时获得ClassCastException
您不能,而且这实际上没有任何意义。 假设您的父类是“动物”,而子类1是大象,而子类2是鼠标,那么您想要的是一种看似大象的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.