繁体   English   中英

ByteBuddy:如何在另一个类中使用自定义方法声明一个类

[英]ByteBuddy: How to declare a class with a custom method inside another class

我正在尝试动态创建一个扩展类ServerPing的类,在这个类中有一个名为Serializer的静态类,我想覆盖它的方法“a”并返回我自己的JsonElement。 问题是我不知道如何使用bytebuddy编辑另一个类中的静态类。

这是它的样子(但是defineClassInside不存在):

        Class<?> serverPingSerializerClone = new ByteBuddy()
                .subclass(serverPingClass)
                .defineClassInside("Serializer",
                        new ByteBuddy().subclass(ServerPing.Serializer.class)
                                .method(ElementMatchers.named("a")
                                        .and(ElementMatchers.returns(JsonElement.class)
                                                .and(ElementMatchers.takesArguments(3))))
                                .intercept(FixedValue.value(exampleResponse))
                                .make())
                .make()
                .load(Core.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER).getLoaded();```

在字节代码级别,Foo中定义的内部类Bar只是一个名为Foo $ Bar的类,带有一些额外的元数据。

您可以像处理任何其他类一样处理内部/嵌套类,并将其子类化。 如果您需要添加内部类元数据,Byte Buddy有DSL步骤来编辑/添加此类信息,例如innerTypeOf。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM