クラスの属性値を別のクラスの同じ属性にコピー

1521 ワード

コードには高度なコードがたくさんありますが、同じ属性の値を別のクラスにコピーすることを示します.たとえば、AクラスにString name、int scoreがあります.BクラスにはString name、int score、String schooleがあります.今、Aクラスのnameとscoreの値をBにコピーしたいと思っています.次の方法を使って、コードが上手だと思います.私たちは勉強します.
    public static void copy(Object source, Object target) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InvocationTargetException {

        Class sourceClass = source.getClass();//     Class
        Class targetClass = target.getClass();//     Class

        Field[] sourceFields = sourceClass.getDeclaredFields();//  Class       
        Field[] targetFields = targetClass.getDeclaredFields();//  Class       

        for(Field sourceField : sourceFields){
            String name = sourceField.getName();//   
            Class type = sourceField.getType();//    

            String methodName = name.substring(0, 1).toUpperCase() + name.substring(1);

            Method getMethod = sourceClass.getMethod("get" + methodName);//      get  

            Object value = getMethod.invoke(source);//      get       

            for(Field targetField : targetFields){
                String targetName = targetField.getName();//        

                if(targetName.equals(name)){
                    Method setMethod = targetClass.getMethod("set" + methodName, type);//     set  

                    setMethod.invoke(target, value);//       set  
                }
            }
        }
    }