一、反射调用static方法携带参数:
ClassLoader loader = MainActivity.class.getClassLoader();
Class<?> clz;
clz = loader.loadClass("com.example.jbptest.TestFunction"); //加载类
Method m = clz.getDeclaredMethod("add",int.class,int.class); //获取方法m.invoke(clz, 2, 4); //反射调用,static方法调用时,不必得到对象示例
二、反射调用非static方法不带参数:
ClassLoader loader1 = MainActivity.class.getClassLoader();
Class<?> clz1;
clz1 = loader1.loadClass("com.example.dexfile.DexFileTest2"); //加载类 :包名+类名
Method m1 = clz1.getDeclaredMethod("testInstanceof"); //获取方法
Object methodobject1 = clz1.newInstance(); //实例化对象
m1.invoke(methodobject1); //反射调用
三、另一种反射调用方式:
Class dexfiletest2 = Class.forName("com.example.jbptest.TestFunction"); //初始化类:包名+类名
Methon method = dexfiletest2.getMethod("testInstanceof");
Object methodobject1 = dexfiletest2.newInstance(); //调用静态方法则不需要实例化这步
method.invoke(methodobject1); //反射调用
dexfiletest2.getname();
第一步:获取class
第二步:获取method
第三步:实例化
第四步,调用invoke