经伟

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

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();
        }
    }
 
}

 

posted on 2016-02-19 15:03  经伟  阅读(992)  评论(1)    收藏  举报