我有一个具有40个属性的抽象超类.我还有2个子类,它们基本上扩展了超类.现在我想把一个子类转换成另一个子类.
public abstract class ParentClass{
// ... many attributes
}
public ChildClassA extends ParentClass{}
public ChildClassB extends ParentClass{}
像这样的简单类转换不起作用,并引发ClassCastException:
public ChildClassA to(){
return (ChildClassA) ((ParentClass) this);
}
我可以手动编写一个复制构造函数,但这是一项繁琐的工作.
另一种方法是序列化和转换.例如,使用XML或JSON.但这用于克隆类,再次反序列化将引发类强制转换异常.
还有其他更好的方法吗?
EDIT:
由于人们要求设计决策:
我有两个相同列的表.一个表有数据,另一个没有.我必须从原始表中检索行->;执行处理->;放回第二张桌子.
因此,为了最小化代码复杂性,我使用了超类实体(JPA),它包含所有字段(超过40个字段,用‘’注释),并从中扩展了2个子类(因 for each 类只能有1个@Table注释).
现在要进行处理,我需要将数据从原始表检索到原始子类.创建新的第二个子类,并将值从原始复制到新.进行处理.将第二个实体持久化到第二个表中.