用方法对象进行反射

package com.mysec.reflex;

import java.lang.reflect.Method;

public class MethodDemo {

    public static void main(String[] args) {
        //要获取print(int,int)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
        A a = new A();
        Class<?> c = a.getClass();
        /**
         * 获取方法名称和参数列表来决定
         * getMethod获取的是public的方法
         * getDeclaredMethods获取的是自己声明的方法
         */
//        c.getDeclaredMethods();
        try {
//            Method method = c.getMethod("print", new Class[]{int.class,int.class});
            Method method = c.getMethod("print",int.class,int.class);//获取方法对象
            //方法的反射操作
//            a.print(1, 2);//方法的反射操作是用method对象来进行方法调用和a.print调用的效果相同
            //如果没有返回值返回null,有返回值返回具体的返回值
            Object o = method.invoke(a, new Object[]{1,2});//用方法进行反射操作
//            Method method2 = c.getMethod("print");
            Method method2 = c.getMethod("print", new Class[]{});
//            method2.invoke(a, new Object[]{});
            method2.invoke(a);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
}

class A{
    public void print(){
        System.out.println("ptint");
    }
    public void print(int a,int b){
        System.out.println(a+b);
    }
    public void print(String a,String b){
        System.out.println(a+b);
    }
}

posted @ 2017-07-02 21:44  彬灵晨夏  阅读(292)  评论(0编辑  收藏  举报