[英]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.