为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2019-07-30 14:54:26
为什么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'?


因此,接口上的注释很少有用。


查看完整回答
反对 回复 2019-07-30
  • 2 回答
  • 0 关注
  • 1292 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信