美文网首页
反射实现父类转换为子类

反射实现父类转换为子类

作者: 武云霄 | 来源:发表于2018-08-16 16:04 被阅读0次
/**
     * 父类向子类转换,新增数据,对象复制
     * @param returnType    子类类型
     * @param parent    父类对象
     * @param <T>   转换结果
     * @return
     * @throws NoSuchMethodException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     * @throws InstantiationException
     */
    public static <T> T pToC(Class<T> returnType,Object parent) throws NoSuchMethodException,
            IllegalAccessException, InvocationTargetException, InstantiationException {
        Constructor con=returnType.getDeclaredConstructor();
        con.setAccessible(true);
        T result= (T) con.newInstance();
        return pToC(result,parent);
    }
    /**
     * 父类向子类转换,融合数据
     * @param result    子类对象
     * @param parent    父类对象
     * @param <T>   转换结果
     * @return
     * @throws IllegalAccessException
     */
    public static <T> T pToC(T result,Object parent) throws IllegalAccessException{
        if(parent.getClass().isAssignableFrom(result.getClass())){
            Class parentClass=parent.getClass();
            Field[] parentFields=parentClass.getDeclaredFields();
            for(Field parentField:parentFields){
                if(!Modifier.isFinal(parentField.getModifiers())){
                    parentField.setAccessible(true);
                    Object value=parentField.get(parent);
                    parentField.set(result,value);
                }
            }
        }
        return result;
    }

转载注明地址:https://www.jianshu.com/p/cfb9b77d25f6

相关文章

  • 反射实现父类转换为子类

    转载注明地址:https://www.jianshu.com/p/cfb9b77d25f6

  • C#面向对象基础2

    1.里氏转换: 子类可以赋值给父类 如果父类创建的是子类对象,那么可以将父类强制转换为子类 Is可以判断一个类的对...

  • iOS 小知识点总结

    子类实现父类方法时,监测子类是否调用super方法。 在父类中声明方法时: 子类中实现该父类方法: 图片压缩

  • 父类转换为子类

    C# 父类转换为子类公有方法 调用

  • 向上转型和线下转型

    概念 向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是...

  • C++拷贝应拷贝所有部分

    子类拷贝时,不应忘记父类部分,例: 子类拷贝构造实现,注意其中的父类部分: 子类拷贝operator=操作符实现,...

  • 枚举

    如果父类实现了 serializable 接口,子类不用再实现序列化接口,子类及父类成员变量即可序列化 如果父类没...

  • scala 调用java通过父类调用子类方法实现

    scala 调用java通过父类调用子类方法实现 java 父类 A 抽象类: java 子类 B 继承A类,并...

  • swift学习之构造函数

    1、 子类没有实现父类的任何一个指定构造函数,那么子类将回继承父类的所有指定构造函数2、子类实现了父类的所有指定构...

  • iOS 父类调用子类的方法

    在子类实现父类的方法,当父类调用子类的方法的时候,就可以了,但是父类也需要实现该方法,我懂了

网友评论

      本文标题:反射实现父类转换为子类

      本文链接:https://www.haomeiwen.com/subject/cgrobftx.html