我想使用 CGLIB 代理將我自己的可重用 equals() 方法添加到現有對象。這些對象不一定實現任何接口,我需要能夠將代理對象轉換為原始類(無需獲取代理的目標)。不幸的是,CGLIB 似乎實現了自己的 equals() 方法并確保只調用該方法:有一個私有靜態類 (EqualsInterceptor),其方法 intercept() 實現了合理的邏輯來比較代理對象。問題是這個方法最后將比較委托給目標對象:我需要重用一些目標類沒有實現的邏輯。使用標準代理,我能夠攔截對 equals() 方法的調用并執行我的邏輯。問題是這些代理不能轉換為原始類。看來只能在CGLIB庫中重寫一些類了。這似乎不是一個好主意。
1 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
不,使用 cglib 是不可能的。
您可以使用另一個庫,例如 Byte Buddy,它允許您像任何其他方法一樣進行equals
攔截。hashCode
添加回答
舉報
0/150
提交
取消