Java 父类 与子类之间的转换
熊孩纸
阅读:706
2021-03-31 16:57:28
评论:0
一、子类的实列化通过父类实现。(代码正常)
二、基于子类的实列化是通过父类实现,强制转换父类。(代码正常)
三、父类的实列化不能强制转换为子类。(代码错误,提示:java.lang.ClassCastException)
针对第三种情况,建议采用方案,将父类属性值全部拷贝至子类实列中。
/**
* 父类 属性值拷贝至 子类中
* @param father
* @param child
* @throws Exception
*/
public static <T>void fatherToChild(T father,T child) throws Exception {
if (child.getClass().getSuperclass()!=father.getClass()){
throw new Exception("child 不是 father 的子类");
}
Class<?> fatherClass = father.getClass();
Field[] declaredFields = fatherClass.getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
Field field=declaredFields[i];
Method method=fatherClass.getDeclaredMethod("get"+StringUtils.capitalize(field.getName()));
Object obj = method.invoke(father);
field.setAccessible(true);
field.set(child,obj);
}
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。