当前位置:   article > 正文

Java父子对象属性赋值问题:使用Spring的BeanUtils将父类对象的属性赋值给子类,Java如何将父类对象属性值赋值给子类?_beanutils.copyproperties进行对象之间的属性赋值 但有子类

beanutils.copyproperties进行对象之间的属性赋值 但有子类

Java父子对象属性赋值问题:现有父类Father类,子类Son类继承于Father类,现要求将父类对象的属性值全部赋予给子类,如果通过子类对象.set(父类对象.get属性),那势必相当麻烦。

那么,有没有更加方便的API呢?Spring提供了BeanUtils.copyProperties();可以实现该功能。

父类Father类的属性如下:

  1. @Data
  2. class Father {
  3. private int hight;
  4. @Override
  5. public String toString() {
  6. return "{\"Father\":{" + "\"hight\":" + hight + "}}";
  7. }
  8. }

子类Son类的属性如下:

  1. @Data
  2. class Son extends Father {
  3. private int weight;
  4. @Override
  5. public String toString() {
  6. return "{\"Son\":{" + "\"weight\":" + weight + "},\"super-Son\":" + super.toString() + "}";
  7. }
  8. }

现创建父类对象并给该对象属性赋值,现在将父对象的属性拷贝给子类,错误的代码如下:

  1. Father father = new Father();
  2. father.setHight(180);
  3. //报ClassCastException异常
  4. Son son = (Son) father;
  5. son.setWeight(60);
  6. System.err.println(son.toString());

运行程序,发现报错:类型转换异常!

使用BeanUtils.copyProperties()实现代码如下:

  1. Father father = new Father();
  2. father.setHight(180);
  3. //报ClassCastException异常
  4. Son son = new Son();
  5. BeanUtils.copyProperties(father, son);
  6. son.setWeight(60);
  7. System.err.println(son.toString());

执行代码发现父类对象的属性值已被复制到子类对象中,不需要set、get那么麻烦。

注意:这是Spring提供的API,一定要在Spring环境中测试!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/239556
推荐阅读
相关标签
  

闽ICP备14008679号