[英]Redefine a class using byte-buddy
我想重新定義在現有框架中已經定義的Source類。 我想用增強型類自動替換Source類的原始實例。 我無權訪問創建Source對象的代碼,因此類替換必須在后台自動執行。 是否可以使用字節伙伴來做到這一點?
ByteBuddyAgent.install();
Source source = new ByteBuddy()
.subclass(Source.class)
.method(named("hello")).intercept(MethodDelegation.to(Target.class))
.defineMethod("myNewMethod", void.class).intercept(MethodDelegation.to(Target.class))
.make()
.load(Source.class.getClassLoader(),
ClassReloadingStrategy.fromInstalledAgent())
.getLoaded()
.newInstance();
可以使用Byte Buddy重新定義一個類。 為此,您可以使用ByteBuddy::redefine
或ByteBuddy::rebase
方法而不是子類化。 使用這些功能的最典型方法是為可以使用AgentBuilder
定義一個Java代理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.