为了账号安全,请及时绑定邮箱和手机立即绑定

在 cglib 代理上覆盖 equals

在 cglib 代理上覆盖 equals

梦里花落0921 2023-06-04 15:26:52
我想使用 CGLIB 代理将我自己的可重用 equals() 方法添加到现有对象。这些对象不一定实现任何接口,我需要能够将代理对象转换为原始类(无需获取代理的目标)。不幸的是,CGLIB 似乎实现了自己的 equals() 方法并确保只调用该方法:有一个私有静态类 (EqualsInterceptor),其方法 intercept() 实现了合理的逻辑来比较代理对象。问题是这个方法最后将比较委托给目标对象:我需要重用一些目标类没有实现的逻辑。使用标准代理,我能够拦截对 equals() 方法的调用并执行我的逻辑。问题是这些代理不能转换为原始类。看来只能在CGLIB库中重写一些类了。这似乎不是一个好主意。
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

不,使用 cglib 是不可能的。

您可以使用另一个库,例如 Byte Buddy,它允许您像任何其他方法一样进行equals拦截。hashCode


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信