繁体   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