簡體   English   中英

Java向下反射式反射

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM