反射的学习

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)、静态代码块等等。

posted @ 2021-07-27 00:12  没离开过o  阅读(60)  评论(0)    收藏  举报