Java:源码分析—反射(实例化对象:newInstance)

Java:源码分析—反射(实例化对象:newInstance)_第1张图片 欢迎交流

今天我们来通过源代码,看看Java中反射是如何工作的。

反射,其实在我们日常的编程过程中可能用的并不多,但是第三方的库,这个技术确实应用非常广泛的,包括我们在开发Android应用时,有时为了操作一些不开放的系统属性时,也会用到反射。

这里我们将通过分析反射的运行,来看看Class这个类的功能。开始之前,先提到两个静态的整型变量,在java.lang.reflect.Member中。这两个变量后面会经常提到。

    /**
     * 所有的public成员,包括继承关系和接口
     */
    public static final int PUBLIC = 0;

    /**
     * 所有访问级别的成员,不包括继承(父类、子类)及接口
     */
    public static final int DECLARED = 1;

再看几个属性,在内部类ReflectionData中,保存着一些反射获取的方法、字段等信息集合。

//存放自己的所有字段,不包括继承关系的
volatile Field[] declaredFields;
//存放包括继承关系的public的字段
volatile Field[] publicFi

你可能感兴趣的:(Java,Android源码解读)