安庆市建设办事处网站,卖东西专业网站网上,拓者设计吧官网效果图,网站建设 小白我正在尝试使用javassist以编程方式创建和编译实现接口的类(在运行时)。每当我调用该动态类的实例时#xff0c;都会收到以下错误消息#xff1a;java.lang.AbstractMethodError: FooImpl.test()Ljava/lang/Object;这是我的界面public class FooBarInterface {public T getEn…我正在尝试使用javassist以编程方式创建和编译实现接口的类(在运行时)。每当我调用该动态类的实例时都会收到以下错误消息java.lang.AbstractMethodError: FooImpl.test()Ljava/lang/Object;这是我的界面public class FooBarInterface {public T getEntity();}这是一个示例实体public class FooEntity {Overridepublic String toString() {return Hello, Foo!;}}这是我以编程方式实现接口的方式public void test() {ClassPool classPool ClassPool.getDefault();CtClass testInterface classPool.get(FooBarInterface.class.getName());CtClass fooImpl classPool.makeClass(FooImpl);fooImpl.addInterface(testInterface);CtMethod testMethod CtNewMethod.make(public com.test.FooEntity getEntity(){ return new com.test.FooEntity(); },canImpl);fooImpl.addMethod(testMethod);fooImpl.writeFile();TestInterface test (TestInterface) fooImpl.toClass().newInstance();System.out.println(test.getEntity());}如果我将实现的方法的返回类型更改为Object则不会收到错误如下所示CtMethod testMethod CtNewMethod.make(public Object getEntity(){ return new com.test.FooEntity(); },canImpl);然后我成功地打了hello, Foo! 。 我可以将返回类型更改为Object但是我想进一步了解为什么使用Foo类型返回会产生AbstractMethodError 。