Я бы сказал, что причина в том, что в противном случае возникнет проблема множественного наследования.
Пример:
@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»?
По этой причине аннотации на интерфейсах редко бывают полезны.