复制代码

【02】 反射存在的意义

其实 Java 反射是为数不多我感觉很刺激的机制,为何这么说,因为 Cpp 没有明确的加入(过几天 C++20 大会可能有大佬讲,一定要去听)

C++ 使用PG 函数化编程的时候一般习惯于,将方法作为参数传入,此时传入的是函数指针,但是java没有指针怎么办吧?

  强拆,使用函数名,参数类型生成Method 方法,使用invoke 进行绑定对应实例对象,以及参数

 

package xvy;


import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class _FuncPoint {
    public void test(String []arg)
    {
        for(String s : arg)
        {
            System.out.println(s);
        }
    }
    public static void main(String []arg) throws Exception
    {
        Class<_FuncPoint> s = (Class<_FuncPoint>) Class.forName("xvy._FuncPoint");
        Constructor con =(Constructor)s.getConstructor();

        _FuncPoint po = (_FuncPoint)con.newInstance();
        Method  m = s.getMethod("test",String[].class);
        String [] str = new String [] {"aaa","bbb"};
        m.invoke(po,new Object[]{str});
    }

}
View Code

 

posted @ 2018-11-20 16:33  pg633  阅读(270)  评论(0编辑  收藏  举报