//这里为有值的Bean
package fanshe;
public class TestClass {
private int id=2;
private String name="3";
public TestClass() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//这里为要填充的Bean
package fanshe;
public class ClassTest {
private int id;
private String name;
public ClassTest() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//这里为操作的方法
package fanshe;
import java.lang.reflect.Field;
public class TestFanShe {
public TestFanShe() {
}
/**
* 填充Bean,将第一个Bean的信息放到第二个Bean中,但是我这里做的是两个Bean中有同样的信息
* @param clas Class 有信息的Bean
* @param cla Class 没有信息的Bean
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
* @return Object
*/
public static Object tianChongBean(Class clas,Class cla) throws
ClassNotFoundException, IllegalAccessException, InstantiationException {
//获得第一个Bean中的所有属性
Field[] fieldClas=clas.getDeclaredFields();
//获得第二个Bean中的所有属性
Field[] fieldCla=cla.getDeclaredFields();
//得到Bean的绝对路径,但是这个得到的路径是class fanshe.TestClass
String[] clasString=clas.toString().split("class");
//得到Bean的绝对路径,但是这个得到的路径是class fanshe.ClassTest
String[] claString=cla.toString().split("class");
//在这里forName中的参数只能放fanshe.TestClass绝对路径,所以前面把class去掉,这里是实例化这个Bean
Object objClas=clas.forName(clasString[1].trim()).newInstance();
//在这里forName中的参数只能放fanshe.ClassTest绝对路径,所以前面把class去掉,这里是实例化这个Bean
Object objCla=cla.forName(claString[1].trim()).newInstance();
for (int i = 0; i < fieldClas.length; i++) {
for (int j = 0; j < fieldCla.length; j++) {
//设置属性可以访问,这里不设置为true,那么只能访问public类型
fieldClas[i].setAccessible(true);
fieldCla[j].setAccessible(true);
//这里判断两个属性名是否相等
if(fieldClas[i].getName().equals(fieldCla[j].getName()))
{
//这里将得到TestClass的属性植设置到ClassTest的属性中
fieldCla[j].set(objCla,fieldClas[i].get(objClas));
System.out.println(fieldCla[j].get(objCla));
}
}
}
return objCla;
}
public static void main(String[] args) {
try {
//这里为调用的方法
ClassTest classTest=(ClassTest)tianChongBean(TestClass.class, ClassTest.class);
System.out.println(classTest.getId());
System.out.println(classTest.getName());
}
catch (InstantiationException ex) {
System.out.println("InstantiationException"+ex.getMessage());
}
catch (IllegalAccessException ex) {
System.out.println("IllegalAccessException"+ex.getMessage());
}
catch (ClassNotFoundException ex) {
System.out.println("ClassNotFoundException"+ex.getMessage());
}
}
}
http://www.serverjia.cn/ 电脑配置站