在Android的源码中有很多方法是被@hide注释了,这代表这些方法在外面是看不到且调用不到的。但可以通过反射机制来调用。以下是反射的原理,名词解释
1、专业术语解释:
反射:就是Java自我管理这些(类,如String,ArrayList等,对象等)的机制
2、反射的作用:
可以通过反射机制发现对象(Class类的对象)的类型,发现类型(如 String类)的方法/属性/构造器
可以创建对象并访问任意对象方法和属性等
3、Class加载
类加载到内存:Java将磁盘类文件(即class文件)加载到内存中,为一个对象(即Class类的实例)
4、在eclipse中编码时,按Alt+/会有代码提示,其实这就是利用了反射机制获取的
5、获得基本类型实例:
int.class
long.class等等
6、获得类类型(Class)实例
Class cls = String.class;
Class cls = Class.forName("java.lang.String");
Class cls = "abc".getClass();
以上三个方法获取的是同一个Class的对象,就是String类内存加载的结果
其中Class.forName("java.lang.String")的性能最佳。因为这是一个静态方法,可以利用类名在CLASSPATH中查找对应的类(class文件)。并且装载到内存中,而Class.forName(“java.lang.String”)方法会先在内存中查询是否加载了java.lang.String类。