为什么java类不从已实现的接口继承注释?

为什么java类不从已实现的接口继承注释?

我一直在使用Guice的AOP来拦截一些方法调用。我的类实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使注释类型使用Inherited annotation注释,实现类也不会继承Inherited的java doc中所述的注释:

另请注意,此元注释仅导致注释从超类继承; 已实现接口上的注释无效。

这可能是什么原因?了解对象类在运行时实现的所有接口并不是一件难事,因此必须有充分的理由支持这一决策。


郎朗坤
浏览 1295回答 2
2回答

素胚勾勒不出你

我会说原因是否则会发生多重继承问题。例:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD) @Inheritedpublic @interface Baz { String value(); }public interface Foo{     @Baz("baz") void doStuff();}public interface Bar{     @Baz("phleem") void doStuff();}public class Flipp{     @Baz("flopp") public void doStuff(){}}public class MyClass extends Flipp implements Foo, Bar{}如果我这样做:MyClass.class.getMethod("doStuff").getAnnotation(Baz.class).value()结果会是什么?'baz','phleem'或'flopp'?因此,接口上的注释很少有用。
打开App,查看更多内容
随时随地看视频慕课网APP