Java反射机制实现对象属性值的拷贝

来源:互联网 发布:九珠数学算法视频教程 编辑:程序博客网 时间:2024/05/14 21:52
import java.lang.reflect.Field;/** * @author 欢迎加入Java技术交流群:646766275 * */public class Test {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        A a = new A();        a.setAge(20);        a.setName("test");        try {            Class c1 = Class.forName("A");            Field[] fields1 = c1.getDeclaredFields();            Class c2 = Class.forName("B");            Field[] fields2 = c2.getDeclaredFields();            B b = (B)c2.newInstance();            for (Field field1 : fields1) {                field1.setAccessible(true);                for (Field field2 : fields2) {                    field2.setAccessible(true);                    if (field1.getName().equals(field2.getName())) {                        field2.set(b, field1.get(a));                    }                }            }            System.out.println(b.getName() + " " + b.getAge());        } catch (Exception e) {            e.printStackTrace();        }    }}class A {    private int age;    private String name;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}class B {    private int age;    private String name;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

main方法执行结果:
test 20

注意:A,B两个类如果放在包下,则需附带加上相关包名。

阅读全文
0 0
原创粉丝点击