反射的学习
1.什么是反射(Reflction)?
JVM加载完类以后,就会产生一个Class类型的对象,一个类只有一个Class对象,通过Class对象可以看到类的所有结构内容,包括成员变量、方法名、方法,就像看到一面镜子反射出来一样,所以叫作反射。反射是java作为一个准动态语言的关键
一句话总结:反射就是围绕Class类来进行的
2.反射的使用场景
正常情况下,把代码编写好,对象new好就可以直接启动运行,这种按照写好代码自上而下的运行方式的是属于静态语言的运行,就是所有代码在运行之前就已经编排好,流程已经固定好。如果程序在运行中想要加入新的类,就必须要用到反射,动态的把类加载进已运行的程序中!
3.反射的优、缺点:
优点:着重一个动态,灵活性强
劣势:会影响性能,跟直接new不同,用反射相当于间接获取对象,属于解释性操作,比起正常的编译后执行要慢。
4.反射的创建(Class类):
Class c = Class.forName("java.lang.Object");
5.Class类的总结:
#1.Class类本身也是类
#2.该对象(Class对象)只能由系统创建
#3.已经加载在JVM的,一个类只会有一个Class(实例)对象
#4.Class对象对应的是已加载到JVM的.class文件(字节码文件)
#5.每个类的(实例)对象都会知道是来自哪个Class对象产生
#6.通过Class可以完整获取一个类的所有被加载的结构
#7.Class类是Reflection(反射)的根源(关键),任何想动态加载、运行的类,唯有获得对应的Class对象才能实现。
PS:要学习反射,就要先理解JVM的类加载机制的流程,JVM是什么时候创建class对象,什么时候加载静态变量(即类变量static)、静态代码块等等。

浙公网安备 33010602011771号