我会说的原因是否则会出现多继承问题。
例:
@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’?
因此,接口上的注释很少有用。