反射 -- 业务需求:执行某个类中全部的以test为开头的无参数无返回值的非静态方法。

package demo;
//业务需求:执行某个类中全部的以test为开头的无参数无返回值的非静态方法。
import java.lang.reflect.Method;
import java.util.Scanner;

/**
 * 执行一个类中全部以test开头的方法
 * @author Administrator
 *
 */
public class Demo2 {
    public static void main(String[] args) throws Exception{
        //动态加载类
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入类名:");
        String classname = scan.nextLine();
        //动态获取全部方法信息
        Class cl = Class.forName(classname);
        Method[] methods = cl.getDeclaredMethods();
        //迭代全部方法查找以test为开头的方法
        Object obj = cl.newInstance();
        for(Method m:methods){
            if(m.getName().startsWith("he")){
                //System.out.println(m);
                //动态执行方法。
                m.invoke(obj);
                System.out.println(m);
            }
        }
        
    }
}

 

posted @ 2017-07-29 18:33  scha  阅读(204)  评论(0编辑  收藏  举报