赞
踩
Java父子对象属性赋值问题:现有父类Father类,子类Son类继承于Father类,现要求将父类对象的属性值全部赋予给子类,如果通过子类对象.set(父类对象.get属性),那势必相当麻烦。
那么,有没有更加方便的API呢?Spring提供了BeanUtils.copyProperties();可以实现该功能。
父类Father类的属性如下:
- @Data
- class Father {
- private int hight;
-
- @Override
- public String toString() {
- return "{\"Father\":{" + "\"hight\":" + hight + "}}";
- }
- }
子类Son类的属性如下:
- @Data
- class Son extends Father {
- private int weight;
-
- @Override
- public String toString() {
- return "{\"Son\":{" + "\"weight\":" + weight + "},\"super-Son\":" + super.toString() + "}";
- }
- }
现创建父类对象并给该对象属性赋值,现在将父对象的属性拷贝给子类,错误的代码如下:
- Father father = new Father();
- father.setHight(180);
- //报ClassCastException异常
- Son son = (Son) father;
- son.setWeight(60);
- System.err.println(son.toString());
运行程序,发现报错:类型转换异常!
使用BeanUtils.copyProperties()实现代码如下:
- Father father = new Father();
- father.setHight(180);
- //报ClassCastException异常
- Son son = new Son();
- BeanUtils.copyProperties(father, son);
- son.setWeight(60);
- System.err.println(son.toString());
执行代码发现父类对象的属性值已被复制到子类对象中,不需要set、get那么麻烦。
注意:这是Spring提供的API,一定要在Spring环境中测试!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。