1.使用反射写代码的概率可能比较少,但是如果有需求需要实现一个框架,或者是为了自身阅读源码,就会大量的需要是使用反射;

2.背景:方法区中的类,方法,成员变量无法直接获得;但是可以通过提供的Class类,得到所需要的方法,属性,构造器等。(可以将Class类比作一面镜子,可以用于将方法区中的方法成员变量,构造器等反射出去,以便我们使用;类似于反射的作用)

3.类加载的过程:1、将字节码文件加载到方法区中、2生成一个Class实例对象;(每个类的class实例对象都不一样)

4.Class类源码的大致内容: registerNative()方法,注册本地方法,由于java是跨平台的,使用此方法就会将本地方法注册到实例对象中以便调用;

forName()可以获取一个Class对象,可以填写一个class的全限定名称

newInstance()成员方法,可以返回一个实例对象;

isInstance()是否是一个实例对象

isInterface()是否是一个接口

isArray()

getName()

getClassLoader()

getSuperclass()

getPackage()

getInterface() 这些常见的 方法大部分是通过调用本地方法实现的

toClass()

getDeclaringClass()

getSimpleName()

getClasses()

getFields() 拿到所有的成员变量

getConstructors()拿到构造器