是否可以在给定Class <?的情况下实例化Java Annotation?扩展注释>?

Ste*_*eve 5 java reflection annotations

我有一个Class<? extends Annotation>并且尝试过调用newInstance()但是Java因为我无法实例化接口的明显原因而对我大吼大叫.但我知道像EasyMock这样的框架完全能够实例化接口.Annotation从我的身上得到一个完全愚蠢的实例需要Class什么?

Aff*_*ffe 7

模拟框架不实例化接口,它们构建在运行时即时实现它们的类.你可能会发现这个javadoc很有启发性,你想做什么!


Ste*_*eve 7

感谢Affe指出了正确的方向 - 我会评论他的答案,但后来我无法格式化解决方案:

Annotation annotation = (Annotation) Proxy.newProxyInstance(
  clazz.getClassLoader(),
  new Class[] { Annotation.class },
  new InvocationHandler() {
    @Override public Object invoke(Object proxy, Method method, Object[] args) {
      return clazz; // only getClass() or annotationType() should be called.
    }
  });
奇迹般有效.

  • 我无法弄清楚_good_这个破坏的Annotation实例可能对你有什么影响.这就像我要了一个汉堡,并得到一张火腿三明治的旧黑白照片的复印件.说明? (4认同)