[英]Java downcasting with reflection
我在Java 1.6中有一个类似于此示例的模型:
public class Animal {
public String color;
}
public class Dog extends Animal {
public Float height;
}
public class Bird extends Animal {
public Integer wings;
}
现在我想从动物身上投给任何孩子。 我知道它为禁止的转换抛出了运行时异常。 因此,我认为,它可能有一个孩子只用一个构造函数和Java反射的帮助父领域。 例:
public class Animal {
public String color;
public Animal(Animal old){
//Set all fields by reflection. but how!
}
}
public class Dog extends Animal {
public Float height;
public Dog (Animal old){
super(old);
}
}
public class Bird extends Animal {
public Integer wings;
public Bird (Animal old){
super(old);
}
}
但是如何用反射设置所有父域?
SOLUTION BY Thinaesh( https://stackoverflow.com/a/17697270/1474638 )谢谢! 我使用Spring所以我只需要在父类的构造接下来要做好:
public Animal(Animal old){
super();
BeanUtils.copyProperties(old, this);
}
public Dog(Animal old){
super(old);
}
public Bird(Animal old){
super(old);
}
尝试从Apache commons库访问BeanUtils.copyProperties。(Spring的BeanUtils类中提供了相同的东西。
通过对您的问题的评论得到一些澄清后:
您在这里所做的就是在类的构造函数中复制值。 无需反思。 除非没有其他方法,否则应避免反思。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.