向下轉換我在Java 1.6的類似於此示例哈瓦模型:與Java反射
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);
}
邊注:如果你不需要它們,使用原語,而不是原始包裝對象 – BackSlash
這怎麼應該工作?你不能設置一個''height''(從Dog類中的一個字段)到Animal,因爲沒有這樣的字段。 – f1sh
@ f1sh我不想設置子字段,我想要一個設置了父字段的子對象。很明顯,子字段必須爲空值,因爲在父類中我沒有這個字段 – earnaz