Java中反射学习系列教程之一
- 反射
- 时间:2019-06-23 10:10
- 7105人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
在上一个系列教程-《Java中注解学习系列教程》中解析自定义注解的时候用到了Java中一种技术--反射。其实在很多源码中,我们都能看到反射的身影。那么什么是反射?为什么要用反射?反射都有哪些常用API?从本文开始我们将系统的介绍Java中反射技术。
Java反射学习系列教程主要内容:
本文主要内容:
一:什么是反射?
二:反射的特点是什么?
一:Java中反射是什么
反射中的反怎么理解
既然有反射及反着来,那么什么是【正】呢?请看下面代码:
Person p = new Person();
这个代码,我们大家都很熟悉,在刚学Java的时候声明对象及对象引用的时候老师就说了,声明对象要使用关键字 new来创建对象。
其实现在我们来分析上面这行代码
等号左边 Person p:我已经知道我需要的是一个Person对象,使用p这个变量来代替Person对象。
在看等号右边new Person():new 是关键之就不多说了,而new出的对象就是我需要的Person对象了。
如果我们在new的时候使用其他对象会怎么样?
会提示cannot resolve symol 的错误。不能转换的。
以上流程就是我们说的【正】流程创建对象。
我们可以分析得到:
在使用对象的时候,已经知道需要使用的对象类型。如上图中:已经知道使用的对象是Person而不是Student对象了。也就是说,在运行时候,需要什么对象,我们就创建什么对象。
反射中的反的理解:在使用的之前,提前不知道需要使用什么类型的对象。只是在调用的时候,才知道要调用的对象类型。这种反其道而行的就是反射中反的理解。
反射定义
先来看看百科上是怎么定义的
也可以这么理解:
反射就是.class文件在运行的时候,进行拆分。
可以理解为反射是在运行的时候对.class文件进行解剖。将对象中的构造器、方法、属性等解剖成一个一个对象。在运行的时候,可以动态的获取属性或方法
二:反射的特点
简单的来说:
在运行的时候可以动态的创建任意对象并调用其方法,还可以生成动态代理