簡體   English   中英

使用字節伙伴重新定義一個類

[英]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::redefineByteBuddy::rebase方法而不是子類化。 使用這些功能的最典型方法是為可以使用AgentBuilder定義一個Java代理。

暫無
暫無

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

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