《Oracle Java SE编程指南》26-01:反射的概念

课程封面-JavaSE-AT阿宝哥

内容导航

  • 前言
  • 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阿宝哥
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。
支付 ¥1.00 继续阅读

相关阅读更多精彩内容

友情链接更多精彩内容