相关疑难解决方法(0)

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

我一直在使用Guice的AOP来拦截一些方法调用.我的类实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法.即使注释类型使用Inherited annotation注释,实现类也不会继承Inherited的java doc中所述的注释:

另请注意,此元注释仅导致注释从超类继承; 已实现接口上的注释无效.

这可能是什么原因?了解对象类在运行时实现的所有接口并不是一件难事,因此必须有充分的理由支持这一决策.

java inheritance annotations interface guice

105
推荐指数
2
解决办法
6万
查看次数

在接口处指定时,是否需要在实现时使用注释

我想使用@Nonnull提供的注释,javax.annotaiton.Nonnull其中保留策略作为运行时.使用此注释,我想确保此函数永远不会返回null.我想在界面上添加注释,以便将来的实现不会破坏现有代码,如下所示

public interface X {
    @Nonnull public List<A> func();
}
Run Code Online (Sandbox Code Playgroud)

现在我不明白的是,我是否应该在实现上使用相同的注释.那么下面哪一个是编写这个接口的实现的正确方法(这两个编译):

public class XImpl implements X {
    @Override
    @Nonnull public List<A> func() {
         //code
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class XImpl implements X {
    @Override
    public List<A> func() {
         //code
    }
}
Run Code Online (Sandbox Code Playgroud)

java annotations

5
推荐指数
1
解决办法
198
查看次数

标签 统计

annotations ×2

java ×2

guice ×1

inheritance ×1

interface ×1