代理对象地址值问题新思考

代理对象地址值问题新思考

问题回顾:

为userService找的代理对象proxy,打印的地址值与userService一样!!!

UserService类:

在这里插入图片描述

ProxyFactoryByJDK代理类:

在这里插入图片描述

UserTest测试类:

在这里插入图片描述

控制台打印:

在这里插入图片描述

动态代理对象时运行时期动态创建的代理对象,和目标对象那不是用一个对象。对于这一点,== 与 equals 都为fasle已经给出了证据。那么为什么直接打印,目标对象和proxy对象内容完全相等呢?

首先,直接打印一个对象,实际上是调用对象的toString方法!!!

在这里插入图片描述

toString()和上面控制台的输出一对比,不难发现,proxy输出打印的其实是userService的toString()返回值字符串。

为了证明,重写UserService的toString()

在这里插入图片描述

控制台打印:

在这里插入图片描述

重写UserService的toString()后,直接打印proxy输出的也是UserService的toStirng()返回值,证明直接打印proxy,前置增强和后置增强都打印,实际上是调用目标对象的toString(),其实就是对toString()的增强。

调用目标对象的toString(),其实就是对toString()的增强。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值