Java中反射学习系列教程之一

  • 作者: 凯哥Java
  • 反射
  • 时间:2019-06-23 10:10
  • 1014人已阅读
简介 在上一个系列教程-《Java中注解学习系列教程》中解析自定义注解的时候用到了Java中一种技术--反射。其实在很多源码中,我们都能看到反射的身影。那么什么是反射?为什么要用反射?反射都有哪些常用API?从本文开始我们将系统的介绍Java中反射技术。Java反射学习系列教程主要内容:本文主要内容:一:什么是反射?二:反射的特点是什么?一:Java中反射是什么反射中的反怎么理解既然有反射及反着来,那么

在上一个系列教程-《Java中注解学习系列教程》中解析自定义注解的时候用到了Java中一种技术--反射。其实在很多源码中,我们都能看到反射的身影。那么什么是反射?为什么要用反射?反射都有哪些常用API?从本文开始我们将系统的介绍Java中反射技术。

Java反射学习系列教程主要内容:

138204fc4a8de80e5532f385b1684318.png

本文主要内容:

一:什么是反射?

二:反射的特点是什么?

一:Java中反射是什么

反射中的反怎么理解

既然有反射及反着来,那么什么是【正】呢?请看下面代码:

Person p = new Person();

这个代码,我们大家都很熟悉,在刚学Java的时候声明对象及对象引用的时候老师就说了,声明对象要使用关键字 new来创建对象。

其实现在我们来分析上面这行代码

等号左边 Person p:我已经知道我需要的是一个Person对象,使用p这个变量来代替Person对象。

在看等号右边new Person():new 是关键之就不多说了,而new出的对象就是我需要的Person对象了。

如果我们在new的时候使用其他对象会怎么样?

57760eb0fbf0dec84038711375b1c85c.png

会提示cannot resolve symol 的错误。不能转换的。

以上流程就是我们说的【正】流程创建对象。

我们可以分析得到:

在使用对象的时候,已经知道需要使用的对象类型。如上图中:已经知道使用的对象是Person而不是Student对象了。也就是说,在运行时候,需要什么对象,我们就创建什么对象。

反射中的反的理解:在使用的之前,提前不知道需要使用什么类型的对象。只是在调用的时候,才知道要调用的对象类型。这种反其道而行的就是反射中反的理解。

反射定义

先来看看百科上是怎么定义的

99757dec332115e90ed4d351ad6811e8.png

也可以这么理解:

反射就是.class文件在运行的时候,进行拆分。

可以理解为反射是在运行的时候对.class文件进行解剖。将对象中的构造器、方法、属性等解剖成一个一个对象。在运行的时候,可以动态的获取属性或方法

二:反射的特点

12b2b0a718ed9f5bfb5c900a867b7e6d.png

简单的来说:

在运行的时候可以动态的创建任意对象并调用其方法,还可以生成动态代理



Top Top