JAVA:反射

反射概述

在这里插入图片描述
静态语言VS动态语言:
在这里插入图片描述
反射的功能:
在这里插入图片描述
反射机制与封装是否矛盾?两个技术如何看待?
不矛盾。
封装性体现在标记为公共的方法也许是可以用到的,建议去调用。私有的方法不建议使用。

通过直接new的方式和反射的方式都可以调用公共的结构,用哪个?
在程序运行时才知道要造哪个类的对象,体现动态性,使用反射。

关于Java.lang.Class的理解

在这里插入图片描述
获取class的实例有四种方法:
在这里插入图片描述
在这里插入图片描述
对于数组来说,只要元素类型和维度一致,class类就是同一个,即

int[] a = new int[10];
int[] b = new int[100];
System.out.println(a.getClass()==b.getClass());

以上代码返回True。
读取properties配置文件
在这里插入图片描述

创建运行时类的对象

在这里插入图片描述
**反射的动态性:**编译时不确定要创建的是哪个类的对象,只有在运行时才能确定创建哪个类的对象,如
在这里插入图片描述
只有在运行时才知道随机数的值,从而确定要创建哪个类的对象。

获取运行时类的完整结构

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

调用运行时类中的指定结构

属性

在这里插入图片描述

方法

在这里插入图片描述
调用静态方法:
在这里插入图片描述
invoke()中可以填null,因为showDesc是通过clazz找到的。

构造器

在这里插入图片描述

动态代理

在这里插入图片描述
在这里插入图片描述
静态代理举例:
在这里插入图片描述
被代理类和代理类在编译期间已经确定,因此称之为静态代理。
动态代理举例:
在这里插入图片描述
在Invoke()方法中写目标方法的动作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值