读书人

反射例子希望对大家有帮助,该如何处理

发布时间: 2012-02-16 21:30:36 作者: rapoo

反射例子希望对大家有帮助
//有数据的bean
package utilbeans;

public class UtilsBeansOne {
public UtilsBeansOne() {
}

public String getPassword() {
return password;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public void setPassword(String password) {
this.password = password;
}

private String userName = "张三 ";
private String password = "123456 ";
}
//////////////////////////////////////////
没有数据的bean
package utilbeans;

public class UtilsBeansTwo {
public UtilsBeansTwo() {
}

public String getPassword() {
return password;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {


System.out.println(userName);
this.userName = userName;
}

public void setPassword(String password) {
System.out.println(password);
this.password = password;
}

private String userName = null;
private String password = null;

}
///////////////////////////////////////////
具体的填充方法
package utilbeans;

import java.lang.reflect.Method;
import java.lang.reflect.*;

public class UtilsBeansTest {
public UtilsBeansTest() {
}

/**
* 此功能为将第一个对象的内容填充到第二个对象中
* @param oneObject String 内容已经存在的对象
* @param twoObject String 要填充的对象
*/
public static Object utilBean(String oneObject, String twoObject) {
Class utilOneClass = null;
Class utilTwoClass = null;
try {

//将字符串转化为Class对象
utilOneClass = Class.forName(oneObject);


utilTwoClass = Class.forName(twoObject);
} catch (ClassNotFoundException ex) {
System.out.println(ex.toString());
return null;
}

Object objUtilBeanOne = null;
Object objUtileBeanTwo = null;
try {

//创建对象实例
objUtilBeanOne = utilOneClass.newInstance();
objUtileBeanTwo = utilTwoClass.newInstance();
} catch (IllegalAccessException ex1) {
System.out.println(ex1.toString());
return null;
} catch (InstantiationException ex1) {
System.out.println(ex1.toString());
return null;
}



//获得对象的所有方法;
Method[] oneMethod = utilOneClass.getDeclaredMethods();
Method[] twoMethod = utilTwoClass.getDeclaredMethods();

Method oneBeanMethod = null;
Method twoBeanMethod = null;

//循环所有方法
for (int oneIndex = 0; oneIndex < oneMethod.length; oneIndex++) {
oneBeanMethod = oneMethod[oneIndex];
String oneMethodName = oneBeanMethod.getName();

//判断是否为get方法
if (oneMethodName.indexOf( "get ") > -1) {
for (int twoIndex = 0; twoIndex < twoMethod.length; twoIndex++) {
twoBeanMethod = twoMethod[twoIndex];

//获得方法名
String towMethodName = twoBeanMethod.getName();


String oneName = oneMethodName.substring(oneMethodName.
indexOf( "get ") + 3);
String twoName = towMethodName.substring(towMethodName.
indexOf( "set ") + 3);

//判断去掉get/set后的方法名是否相同
if (oneName.equals(twoName)) {
try {
//获得第一个bean的值
String oneAttrValuedd = oneBeanMethod.invoke(


objUtilBeanOne, null).toString();

//将从第一个bean中取出的值,填充到第二个bean中
Object[] obj = {oneAttrValuedd};

//将obj内容填充到objUtileBeanTwo对象的twoBeanMethod方法中
twoBeanMethod.invoke(
objUtileBeanTwo, obj);
} catch (InvocationTargetException ex2) {


System.out.println(ex2.toString());
return null;
} catch (IllegalArgumentException ex2) {
ex2.printStackTrace();
return null;
} catch (IllegalAccessException ex2) {
System.out.println(ex2.toString());
return null;
}


}
}
}
}
return objUtileBeanTwo;
}

public static void main(String[] args) {
//bean填充前
UtilsBeansTwo utitlBean = new UtilsBeansTwo();
System.out.println( "username : " + utitlBean.getUserName());
System.out.println( "password : " + utitlBean.getPassword());
UtilsBeansTwo utitlBeanAfter = (UtilsBeansTwo)utilBean( "utilbeans.UtilsBeansOne ", "utilbeans.UtilsBeansTwo ");
System.out.println( "--------------------------------------------- ");
//bean填充后
System.out.println( "username : " + utitlBeanAfter.getUserName());
System.out.println( "password : " + utitlBeanAfter.getPassword());
}
}


[解决办法]
up
[解决办法]
我也up
------解决方案--------------------


多谢!
[解决办法]
收藏
[解决办法]
非常感谢!
[解决办法]
多谢楼主。up一下。
[解决办法]
up
[解决办法]
好东西当然要up
[解决办法]
谢谢
[解决办法]
支持一下!
[解决办法]
看不懂,但支持一下
[解决办法]
谁说没有人要,只是想要的人没有看见。
[解决办法]
up
[解决办法]
非常感谢
[解决办法]
up
[解决办法]
写的真不错。。连顶加接分~~

读书人网 >J2SE开发

热点推荐