反射机制与动态代理

反射机制概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Class是描述类的类 (对象可以由类来描述, 类可以由Class类来描述)

理解Class类并获取Class实例

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
疑问?

通过直接new的方式或反射的方式都可以调用公共的结构, 开发中到底用哪个?

直接new的方式. 什么时候回使用: 反射的方式. 反射的特征: 动态性. 如果能确定new哪个类的对象就用new, 如果在程序执行过程中才能确定的话, 就用反射

反射机制与面向对象中的封装性是不是矛盾的? 如何看待两个技术?

不矛盾. 封装性体现在, 设置为private的不建议使用, public的建议使用, 所以才会把字段,方法设置成private, 认为调用者没有必要调用private修饰的. 但是使用反射可以强制去调用

关于java.lang.Class类的理解

  1. 类的加载过程:
    程序经过javac.exe命令以后, 会生成一个或多个字节码文件(.class结尾),
    接着我们使用java.exe命令对某个字节码文件进行解释运行. 相当于将某个字节码文件加载到内存中, 此过程成为类的加载. 加载到内存中的类, 我们就成为运行时类, 此运行时类, 就作为Class的一个实例
  2. 换句话说, Class的实例就对应着一个运行时类.
  3. 我们加载到内存中的运行时类, 会缓存一定时间. 再此时间之内, 我们可以通过不同的方式来获取此运行时类.此时通过获取Class实例的4种方式获取的同一个类的Class实例都是同一个, 他们的地址也相同

获取Class的实例的方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Class实例可以是那些结构的说明:
在这里插入图片描述

类的加载与ClassLoader的理解

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

创建运行时类的对象

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

获取运行时类的完整结构

获取属性

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

获取属性中的结构

在这里插入图片描述

获取方法

在这里插入图片描述

获取方法中的结构

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

获取构造器结构

在这里插入图片描述

获取运行时类的带泛型父类

普通父类
在这里插入图片描述
带泛型父类
在这里插入图片描述
获取带泛型父类的泛型
在这里插入图片描述

获取运行时类实现的接口

在这里插入图片描述

获取运行时类所在的包

在这里插入图片描述

调用运行时类的指定结构

调用属性

调用public的属性,通常不采用此方法
在这里插入图片描述
调用非public的属性, 这个需要掌握
在这里插入图片描述
调用静态属性, 就把上面那个p换成任意对象, 甚至写null都行

调用运行时类指定的方法

调用非静态方法
在这里插入图片描述
调用静态方法
在这里插入图片描述
Person.class可以换成别的,甚至换成null都可以
在这里插入图片描述

调用运行时类指定的构造器

在这里插入图片描述

反射的应用: 动态代理

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

静态代理的举例

特点: 代理类和被代理类在编译期间, 就确定下来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动态代理举例

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

在这里插入图片描述

在被代理类的方法执行前, 代理类新增加的代码, 需要写在下面类的invoke()中
在这里插入图片描述

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

动态代理与AOP

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值