为什么Java类不从实现的接口继承注释?
我一直在使用Guice的AOP来拦截一些方法调用。我的课程实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使使用继承的注释对注释类型进行注释,实现类也不会继承Inherited的java doc中所述的注释:
还要注意,此元注释仅使注释从超类继承;已实现的接口上的注释无效。
这可能是什么原因?了解对象的类在运行时确实实现的所有接口并不是一件容易的事,因此在此决定背后必须有充分的理由。
回答:
我要说的原因是,否则会发生多重继承问题。
例:
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD) @Inherited
public @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’?
因此,接口上的注释很少有用。
以上是 为什么Java类不从实现的接口继承注释? 的全部内容, 来源链接: utcz.com/qa/425661.html