JAVA:父类反射构造子类

java程序员都知道,我们通过父类派生出来的子类,其中子类的实例是直接可以赋值给父类的对象的,而且不需要做任何类型转换,但是做个赋值的操作其实并没有改变子类对象的任何东西,父类的对象只是拿到了子类的引用而已,通过查看赋值后的父类对象的类型,依然看到的子类的类型。
有时候我们有这样一种需求,有个父类对象需要通过赋值的方式初始化子类对象,而父类是不可以直接赋值给子类对象的,否则会报异常,这个时候我们直接会想到最笨的办法就是,将父类对象的所有成员逐个赋值到子类对应的成员,这个当然没有问题,但是如果我们的成员有变动化,就要去修改赋值方法,很麻烦。
以下代码展示了如何使用通用的方法,将成员全部赋值,避免遗忘,这个操作可以是通过构造函数,也可以是通过方法等实现,其实原理也是循环所有成员逐个赋值。
    /* 父类反射构造子类 */
    public StockRealCache(StockRealData subInstance) {
        try {
            Class<?> clazz = subInstance.getClass();
            Field[] fields = clazz.getFields();
            for (Field subField : fields) {
                Field supprField = getClass().getField(subField.getName());
                supprField.setAccessible(true);
                supprField.set(this, subField.get(subInstance));
            }
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值