Java反射动态执行方法的代码
直接撸代码:User类
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(); } } }

浙公网安备 33010602011771号