首先看看官方的定义:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有的属性和方法;对于任意一个方法,这种动态获取的信息以及动态调用的方法的功能称为java语言的反射机制。
其次看看它的特征:它是允许运行中的java程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。在实际运用中不多,但其它语言没有这一特征。主要提倡的是动态加载,动态链接程序组件的多功能方法,它允许程序创建和控制任何类的对象,无需要提前硬编码目标类。
然后看看它提供的功能:在运行时判断任意一个对象所属的类,在运行时构造任意一个对象所属的类;在运行时判断任意一个类所具有的成员变量和方法,在运行时,调用任意一个对象的方法;生成动态代理。
最后打个比喻:反射就好比一个照妖镜,照妖镜可以把妖怪的所有特征清清楚楚的再镜子里面照出来,反射也是一样的。