android中简单的反射操作

    xiaoxiao2025-02-13  16

    这里的反射只是一个简单的操作,方便自己以后小看一下
    操作前 ,首先要有这个类的源码在文件中,因为这个类的方法可能是@hide(隐藏)的,所以不能直接获得,需要用反射来获得。直接代码… 这是想要用到该类的方法 public class Infos { public String getNum(String num ){ return num ; } } 然后就是如何使用反射 public void useReflect(){ //首先得到对象;后面会使用到 Infos infos = new Infos(); //反射操作 Class<?> loadClass ; try { //参数是想要获取的全类名! loadClass = Infos.class.getClassLoader().loadClass("com.xingao.jsontest.Infos"); // 第一参数方法名, 第二个之后都是参数类型.class ,参数类型是什么就是什么.class!有几个写几个 //获取的方法必须是public的方法 Method method = loadClass.getMethod("getNum", String.class); //这是直接得到所有方法,然后可以遍历等操作 //Method[] methods = loadClass.getMethods(); // for (Method md: methods) { // Log.d("方法", md.toString()); Object invoke = method.invoke(infos, "66666"); //第一参数 ,类的实例 ,方法不是静态的就必须指定!!! //第二后面的参数就是 想要得到的方法的内的依次参数需要输入的内容 //上面的方法等同于String num = infos.getNum("66666"); //当然也可以是没有返回值的操作。 Log.d("**-/-/-/-/-/-/" , invoke.toString()); //log:**-/-/-/-/-/-/ 666666 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }
    转载请注明原文地址: https://ju.6miu.com/read-1296411.html
    最新回复(0)