[英]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.