在Android中会有一些异常方法或者属性,是你想用而拿不到的,这种时候你就需要使用反射了,反射不能跨进程使用
反射机制:(官方解释)
- 在运行状态中,对于任意一个类或者任意一个对象,都能够知道这个类的所有属性和方法,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
反射原理:(以下仅是我个人理解,如有误请帮忙指正,谢谢)
- java中的类运行后JVM会在本地生成一个class文件,而反射则是去加载这个文件,读取里面的信息,解析里面的代码
反射的简单应用
首先我在本地新建了一个类TestFanshe.java,里面只有一个方法
public String getString(String s){
return s + "码农";
}
然后我再用反射的方法去拿到类对象,然后通过反射的方法调用类里面的方法,拿到返回值
Class<?> aClass = null;
try {
aClass = Class.forName("com.weidu.plugincityassistant.TestFanshe");
Object o1 = ReflexUtils.setMethod(aClass.newInstance(),"getString", false, "我是一个");
Log.i("test_fanshe","o1 = " + o1.toString());
} catch (Class