内容导航:
- 前言
- 1、Java反射的概念
- 2、Java反射的作用
- 3、Java反射相关API
前言
我们回忆一下在本课程之前使用Java类的过程:
-
已知一个类的类名、以及类中的方法、属性、构造方法等等。
-
使用创建对象表达式调用该类的构造方法创建其对象。
-
使用对象调用它的方法或属性。
问题:
如果仅仅知道一个类的类名,能否动态得到类的定义信息,包括哪些构造器、属性、方法等?
答案:
通过反射相关的API可以做到,这样,我们就可以在应用程序运行时配置其具体功能。
1、Java反射的概念
JAVA反射(Reflection )机制,是指应用程序在运行状态中,我们能够检查或修改其行为。也就是说,对于任意一个类,都能够知晓这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
2、Java反射的作用
动态获取类的信息,进一步实现需要的功能。可能的使用场景包括:
-
Java EE项目中的部署描述符
web.xml
文件中通过配置Servlet、Filteer、Listener等可以创建其实例。 -
MyBatis、Spring、SpringMVC等框架通过XML文件描述类的基本信息,使用反射机制动态装配对象。
3、Java反射相关API
反射相关的API,大部分在java.lang.reflect
包中,相关的类主要包括:
-
java.lang.Class
(类型) -
java.lang.reflect.Constructor
(构造器) -
java.lang.reflect.Method
(方法) -
java.lang.reflect.Field
(属性) - ......
通过观察上述API,我们发现反射相关API将类的类型、方法、属性的定义都封装成了类。相应的,我们可以这样理解:
-
java.lang.Class
(类型)
类型的定义,即类的类。用来描述Java中所有的类和接口共有的特征和行为。 -
java.lang.reflect.Constructor
(构造器)
构造器的定义,即构造器的类。用来描述Java中所有类的构造器的共有的特征和行为。
-
java.lang.reflect.Method
(方法)
方法的定义,即方法的类。用来描述Java中所有类的方法的共有的特征和行为。
-
java.lang.reflect.Field
(属性)
属性的定义,即属性的类。用来描述Java中所有类的属性的共有的特征和行为。 - ......
其中最重要的是java.lang.Class
类,因为,反射的使用都是由它开始开始。
持续更新,欢迎留言提议!
码字很累,多点赞多赞赏!
扫描二维码,关注AT阿宝哥
网友评论