delegation java_如何使用Byte-Buddy从接口构建Java类的具体实...

我有一个界面,可以说它看起来像这样.

public interface TestObject {

String getString();

Long getLong();

}

我实际上想使用ByteBuddy构建该对象的具体实现.

这是我尝试过的.

public class Runme {

public static void main(String[] args) {

ByteBuddy bb = new ByteBuddy();

Class> clz = bb

.subclass(TestObject.class)

.method(any()).intercept(MethodDelegation.to(Interceptor.class))

.make()

.load(Object.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)

.getLoaded();

try {

Object test = clz.newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

public class Interceptor {

public Object intercept(@Origin String method, @AllArguments Object[] args) throws Throwable {

System.out.println("I have intercepted a call");

return "Hello";

}

}

}

我得到这个错误

Exception in thread "main" java.lang.IllegalArgumentException: None of [] allows for delegation from public boolean java.lang.Object.equals(java.lang.Object)

at net.bytebuddy.implementation.bind.MethodDelegationBinder$Processor.process(MethodDelegationBinder.java:881)

at net.bytebuddy.implementation.MethodDelegation$Appender.apply(MethodDelegation.java:1218)

at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod$WithBody.applyBody(TypeWriter.java:510)

at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod.apply(TypeWriter.java:444)

at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation.create(TypeWriter.java:3193)

at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:1481)

at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:234)

at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$AbstractDelegatingBuilder.make(DynamicType.java:2177)

at com.meta.testbytebuddy.Runme.main(Runme.java:22)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

我在做什么错..如果我想实现多个接口怎么办?

我正在使用ByteBuddy进行代码生成.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值