首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一看就懂的"什么是XXX"系列--什么是反射

一看就懂的"什么是XXX"系列--什么是反射

作者头像
浩说编程
发布2021-08-17 13:51:55
发布2021-08-17 13:51:55
3160
举报
文章被收录于专栏:Java经验之谈Java经验之谈

反射(Reflection)是Java编程中非常重要的一个技术点,它在架构设计中有着广泛应用,springIOC理念的实现就应用了反射机制,是读者必须掌握的技术

读者的收获

1、了解什么是反射

2、java类的编译和加载过程

3、反射的使用方式

4、反射的作用

5、反射机制的应用场景

预备知识

在学习反射之前,读者需要了解java类的编译与加载过程,知道的读者可以直接看下一段:

什么是反射(Reflection)

反射,即反向映射。反射是一种通过将class文件反编译成java文件来获取对象中的属性、方法的机制。反射是一种机制(特定的工作方式)

如何实现反射

先给定一个类

正如上一段所述,应用反射机制需要先获取class对象:

一、判断获得的对象类型与期望对象类型是否匹配

二、获取对象

三、获取属性

1、获取所有属性

2、获取特定属性

四、获取方法

代码语言:javascript
复制
 1、获取全部构造
代码语言:javascript
复制

代码语言:javascript
复制
 
代码语言:javascript
复制
   2、公有构造
代码语言:javascript
复制
   
代码语言:javascript
复制
   3、全部公有方法
代码语言:javascript
复制
   
代码语言:javascript
复制
   4、获取单个方法

方法比较多,读者需要先收藏一下,以备日后使用。这里先有个印象,重点看下面的应用场景,反射在架构的底层设计有很广泛的应用:

反射的应用场景:模拟IOC,从配置文件中动态创建bean实例

用过spring的读者应该清楚,IOC(控制反转)是spring的核心思想之一,通过依赖注入实现,而注入的bean对象就是通过反射机制来实现的。这再次体现了反射机制的重要性,下面我通过代码来模拟一下这个过程,请读者仔细阅读,多加体会:

//首先,创建食物类,派生两个分支ChineseFood、AmericanFood

//现在我需要生产一个ChineseFood,于是我在配置文件里模拟一个 ChineseFood的bean配置(bean配置实际不这么写)

//模拟bean工厂,实例化配置的bean

调用示例:

其实代码并不难,读者需要掌握的是这其中的设计思想:只看静态代码并不知道具体要创建哪种food,当代码运行的时候通过动态加载配置文件来确定需要创建的bean实例类型。

看到这里你已经了解了反射机制的内容,学会了这个技术点,不管是面试还是工作都会对你有所帮助。关注我,你会学到更多

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩说编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档