接口上的注释?

时间:2008-09-28 18:11:22

标签: java annotations

我无法弄清楚能够在Java中注释接口的用例。

也许有人可以举个例子?

10 个答案:

答案 0 :(得分:22)

我在Spring中使用它来注释注释应该应用于所有子类的接口。例如,假设您有一个Service接口,并且您可能有多个接口实现,但无论注释如何,您都希望应用安全注释。在这种情况下,最有意义的是注释界面。

答案 1 :(得分:4)

我广泛使用findbugs。我发现使用annotations指定Nullity约束非常有用。即使你实际上没有使用findbugs,它也会使代码的意图更加清晰。这些注释在接口上和Classes一样多。你可以说它是按合同编程的......

答案 2 :(得分:4)

即使没有示例,也应该清楚地解释 - 接口描述行为,注释也是如此,因此将它们放在一起是合乎逻辑的匹配。

答案 3 :(得分:4)

我正在使用的用例是javax / hibernate bean验证,我们使用接口来帮助我们避免在每个特定类上定义验证。

public interface IUser {
    @NotNull Long getUserId();
    ...
}

public class WebUser implements IUser {
    private Long userId;

    @Override
    public Long getUserId(){
        return userId;
    }
    ...
}

答案 4 :(得分:1)

更多示例,但EJB3中有LocalRemote注释。根据java doc,

  

在界面上使用时,指定   该接口作为本地业务   接口

我想这里的用例是界面有一个特殊功能,最好由注释表示。

答案 5 :(得分:1)

我已经看到很多研究工具使用方法注释来允许用户指定协议,限制等,以便于以后自动检查。

由于注释没有规定你可以用它们做什么,因此没有充分的理由不允许用户注释接口。

答案 6 :(得分:0)

您可以将它用于合同样式编程 - 比仅定义接口(类型和方法名称)更进一步,还定义了一些语义(类型,前置条件,后置条件的内容)。

我必须查看注释如何在Java中工作,但这些东西可以通过Python注释轻松完成......

答案 7 :(得分:0)

在JBoss下部署​​应用程序时,您可以在接口上使用注释来导出jmx-console中的服务。

答案 8 :(得分:0)

我在定义REST接口时使用过它。 RESTeasy允许您创建使用带注释的接口的REST客户端(在此示例中为RESTInterfaceV1):

final RESTInterfaceV1 client = ProxyFactory.create(RESTInterfaceV1.class, "http://localhost:8080/rest");

虽然必须在实际实现REST接口的对象上复制注释,但是接口本身可以单独分发给那些想要创建Java REST客户端的人。

答案 9 :(得分:0)

我用@Immutable标记我的接口,以便向开发人员明确指出Mutability是否实现了接口应该具有的类。正如格赫尔所说,按合同编程。