Java父子对象属性赋值问题:使用Spring的BeanUtils将父类对象的属性赋值给子类,Java如何将父类对象属性值赋值给子类?

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环境中测试!

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值