我想使用 CGLIB 代理將我自己的可重用 equals() 方法添加到現(xiàn)有對(duì)象。這些對(duì)象不一定實(shí)現(xiàn)任何接口,我需要能夠?qū)⒋韺?duì)象轉(zhuǎn)換為原始類(lèi)(無(wú)需獲取代理的目標(biāo))。不幸的是,CGLIB 似乎實(shí)現(xiàn)了自己的 equals() 方法并確保只調(diào)用該方法:有一個(gè)私有靜態(tài)類(lèi) (EqualsInterceptor),其方法 intercept() 實(shí)現(xiàn)了合理的邏輯來(lái)比較代理對(duì)象。問(wèn)題是這個(gè)方法最后將比較委托給目標(biāo)對(duì)象:我需要重用一些目標(biāo)類(lèi)沒(méi)有實(shí)現(xiàn)的邏輯。使用標(biāo)準(zhǔn)代理,我能夠攔截對(duì) equals() 方法的調(diào)用并執(zhí)行我的邏輯。問(wèn)題是這些代理不能轉(zhuǎn)換為原始類(lèi)??磥?lái)只能在CGLIB庫(kù)中重寫(xiě)一些類(lèi)了。這似乎不是一個(gè)好主意。
在 cglib 代理上覆蓋 equals
夢(mèng)里花落0921
2023-06-04 15:26:52