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两个类如果放在包下,则需附带加上相关包名。