一、反射调用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

本文详细介绍了Android中使用反射调用类的三种方法,包括调用static方法和非static方法,以及不同方式的反射实例化和方法调用。通过示例代码展示了如何加载类、获取方法、实例化对象以及执行invoke操作。此外,还提供了一个JavaScript类加载和反射调用的示例。
最低0.47元/天 解锁文章
1925

被折叠的 条评论
为什么被折叠?



