为什么java类不从已实现的接口继承注释?我一直在使用Guice的AOP来拦截一些方法调用。我的类实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使注释类型使用Inherited annotation注释,实现类也不会继承Inherited的java doc中所述的注释:另请注意,此元注释仅导致注释从超类继承; 已实现接口上的注释无效。这可能是什么原因?了解对象类在运行时实现的所有接口并不是一件难事,因此必须有充分的理由支持这一决策。
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
我会说原因是否则会发生多重继承问题。
例:
@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'?
因此,接口上的注释很少有用。
添加回答
举报
0/150
提交
取消