首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGLib:找不到覆盖方法

CGLib:找不到覆盖方法
EN

Stack Overflow用户
提问于 2013-09-13 12:53:03
回答 1查看 242关注 0票数 0

我有密码:

代码语言:javascript
复制
 1  abstract class A {
 2    public abstract <T> T getId();
 3  }
 4  class B extend A {
 5    public Long getId() {
 6      return Long.valueOf(1);
 7     }
 8  }
 9  public class Main {
10    public static void main(String [] args) {
11      FastClass fast = FastClass.create(B.class);
12      FastMethod fastMethod = fast.getMethod("getId", null);
13      try {
14        final B b = new B();
15        Long value = (Long) fastMethod.invoke(b, null);
16      } catch (Exception e) {//
17        e.printStackTrace();
18      }
19    }
20  }   

并在第12行抛出IllegalArgumentException:无法找到方法公共java.lang.Long B.getId()

如何获得实例FastMethod类并执行FastMethod.invoke()?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 04:56:53

我必须为类A获取实例FastClass,并从它获取实例FastMethod,但是使用参数实例类B调用实例FastMethod

此代码运行良好:

代码语言:javascript
复制
 1  abstract class A {
 2    public abstract <T> T getId();
 3  }
 4  class B extend A {
 5    public Long getId() {
 6      return Long.valueOf(1);
 7     }
 8  }
 9  public class Main {
10    public static void main(String [] args) {
11      FastClass fast = FastClass.create(A.class); // changed, was FastClass.create(B.class)
12      FastMethod fastMethod = fast.getMethod("getId", null);
13      try {
14        final B b = new B();
15        Long value = (Long) fastMethod.invoke(b, null);
16      } catch (Exception e) {
17        e.printStackTrace();
18      }
19    }
20  } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18786826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档