62,634
社区成员




public class Users {
private String UserID;
private String UserName;
public String getUserName() {
return this.UserName;
}
public void setUserName(String userName) {
this.UserName = userName;
}
public String getUserID() {
return this.UserID;
}
public void setUserID(String userID) {
this.UserID = userID;
}
}
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
Test test = new Test();
Users user = new Users();
test.execute(user, "Users", "setUserName", "张三");
// 通过反射已经设置了Users对象的userName属性为张三,下面打印
System.out.println(user.getUserName());
}
/**
*
* @param obj
* 待执行方法的对象
* @param ClassName
* 待执行方法对象的类
* @param MethodName
* 待执行的方法名
* @param ParameterValue
* 待执行方法的参数
*/
public void execute(Object obj, String ClassName, String MethodName,
String ParameterValue) {
Class cls = null;
try {
cls = Class.forName(ClassName);
} catch (ClassNotFoundException e) {
// 通过ClassName反射获取该类失败
e.printStackTrace();
}
Method method = null;
try {
method = cls.getMethod(MethodName, String.class);
} catch (SecurityException e) {
// 通过MethodName反射获取该方法失败,SecurityManager校验失败
e.printStackTrace();
} catch (NoSuchMethodException e) {
// 通过MethodName反射获取该方法失败,该方法不存在
e.printStackTrace();
}
try {
method.invoke(obj, ParameterValue);
} catch (IllegalArgumentException e) {
// 反射执行该方法失败,参数不正确
e.printStackTrace();
} catch (IllegalAccessException e) {
// 反射执行该方法失败,无法执行
e.printStackTrace();
} catch (InvocationTargetException e) {
// 反射执行该方法失败,该方法本身抛出异常
e.printStackTrace();
}
}
}
public class Test {
public static void main(String[] args) throws Exception{
List list = new ArrayList();
Class c = Class.forName("java.util.ArrayList");
Method method = c.getDeclaredMethod("add", new Class[]{Object.class});
method.invoke(list, new Object[]{new Integer(100)});
System.out.println(list.get(0));
}
}