簡體   English   中英

使用 ByteBuddy 覆蓋運行時類

[英]Runtime class override with ByteBuddy

我創建了一個基於java.io.File的自定義文件,因此我有:

class CloudFile extends java.io.File {}

ByteBuddy 是否有可能(在運行時)能夠替換對類java.io.File所有調用並用新的CloudFile偽裝

因此,例如,我創建了一個應用程序,該應用程序使用了一個廣泛使用java.io.File的庫,我想要的是該庫對該應用程序中的File類的任何調用都將是對CloudFile的調用

或者,一個更合理的解決方案是,使用 ByteBuddy 創建一個將覆蓋java.io.File的類加載器——問題是什么是正確的?

您可以使用 Byte Buddy 允許使用AgentBuilder構建的 Java 代理重新定義類。 然后你可以指示它重新定義你所有的庫代碼,你用你的CloudFile替換對File構造函數調用,我認為CloudFile的方法有虛擬覆蓋。

為了替換構造函數,創建一個轉換器來注冊一個MemberSubstitution ,其中構造函數被切換出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM