反射的基本使用

这里是修真院后端小课堂,每篇分享文从

八个方面深度解析后端知识/技能,本篇分享的是:

【反射的基本使用】

【修真院java小课堂】反射的基本使用

大家好,我是IT修真院西安分院第4期的学员鲁伯良,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java任务1,深度思考中的知识点——反射的基本使用

(1)背景介绍:

java的反射机制

对于任意一个类,都能知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意一个方法和属性;

这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

java反射机制主要提供以下功能:

1.在运行时判断任意一个对象所属的类。

2.在运行时构造任意一个类的对象

3.在运行是判断任意一个类所具有的成员变量和方法

4.在运行时调用任意一个对象的方法

5.生成动态代理

(2)知识剖析:

实现java反射机制

1.Class类:代表一个类

2.field类:代表类的成员变量(成员变量也称为类的属性)

3.method类:代表类的方法

4.Constructor类:代表类的构造方法

4.Array类:提供了动态创建数组,以及访问数组元素的静态方法

实现java反射机制的流程是什么样的

1).获取对象类型

2).获取对象的属性和方法

3)给对象的属性和方法传参

4)调用对象的方法并执行

(3)常见问题:

1.使用反射和new一个对象来调用对象的方法有什么区别

(4)解决方案:

反射是程序可以访问,检测它本身状态或者行为的一种能力

运行过程中可以知道一个类的属性和方法,还可以修改。

反射调用方法是在程序运行过程中,使用new一个对象这种方式是在编译的时候就已经获取到对象的属性和方法。

(5)编码实战:

(6)拓展思考:

什么是动态?

1.开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。

2.从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。

3.尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。

(7)参考文献:

 互联网

(8)更多讨论:

Q1:反射可以做什么?

A1:可以在程序运行的时候,获取一个完全未知的类的方法和属性,对它的属性赋值,和调用它的方法

Q2:反射有什么好处?

A2:提高程序的灵活行,和扩展性,降低耦合行,提升自适应能力,它允许程序创建和控制任意一个类的对象,不需要对目标类进行编码;

Q3:什么情况下要用到反射?

A3:1.在编译时无法知道该对象或类属于哪些类,此时就可以使用反射了,对象名.getClass ,类.Class.

2.很少情况下是非用反射不可的。大多数情况下反射是为了提高程序的灵活性。因此一般框架中使用较多。因为框架要适用更多的情况。对灵活性要求较高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值