Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ByteBuddy:如何在另一个类中使用自定义方法声明一个类_Java_Reflection_Byte Buddy - Fatal编程技术网

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

Java ByteBuddy:如何在另一个类中使用自定义方法声明一个类,java,reflection,byte-buddy,Java,Reflection,Byte Buddy,我试图动态创建一个类,它扩展了一个类ServerPing,在这个类中有一个名为Serializer的静态类,我想重写它的方法“a”,并返回我自己的JsonElement。 问题是我不知道如何使用bytebuddy在另一个类中编辑静态类 下面是它的外观(但defineClassInside不存在): Class serverPingSerializerClone=new ByteBuddy() .子类(serverPingClass) .defineClassInside(“序列化程序”, 新的B

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

下面是它的外观(但defineClassInside不存在):

Class serverPingSerializerClone=new ByteBuddy()
.子类(serverPingClass)
.defineClassInside(“序列化程序”,
新的ByteBuddy()子类(ServerPing.Serializer.class)
.method(ElementMatchers.named(“a”)
.and(ElementMatchers.returns(JsonElement.class)
.和(元素匹配器。takesArguments(3)))
.intercept(FixedValue.value(示例响应))
.make())
.make()
.load(Core.class.getClassLoader(),ClassLoadingStrategy.Default.WRAPPER).getLoaded()```

在字节码级别,在Foo中定义的内部类栏只不过是一个名为Foo$Bar的类,其中包含一些额外的元数据

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