19

我想不出能够在 Java 中注释接口的用例。

也许有人可以给我一个例子?

4

10 回答 10

26

我在 Spring 中使用它来注释应该应用于所有子类的接口。例如,假设您有一个 Service 接口,并且您可能有该接口的多个实现,但您希望应用安全注释而不考虑注释。在这种情况下,对接口进行注释是最有意义的。

于 2008-09-28T18:25:12.520 回答
5

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

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

public class WebUser implements IUser {
    private Long userId;

    @Override
    public Long getUserId(){
        return userId;
    }
    ...
}
于 2014-09-05T21:10:19.710 回答
4

我广泛使用findbugs。我发现使用注释来指定 Nullity 约束非常有用。即使您实际上不使用 findbugs,它也会使代码的意图更加清晰。这些注释在接口和类上都有其位置。您可能会争辩说这是一种合同编程......

于 2008-09-28T19:34:38.003 回答
4

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

于 2008-09-28T20:25:26.523 回答
1

更多示例,但EJB3 中的本地远程注释。根据java文档,

在接口上使用时,将该接口指定为本地业务接口。

我想这里的用例是接口有一个特殊的功能,最好用注释来表示。

于 2008-09-28T18:12:43.567 回答
1

我见过很多研究工具使用方法注解来让用户指定协议、限制等,方便以后自动检查。

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

于 2008-09-28T20:21:35.223 回答
0

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

不过,我必须检查注释在 Java 中是如何工作的,但是这些东西可以很容易地用 Python 注释来完成......

于 2008-09-28T18:41:08.490 回答
0

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

于 2008-10-23T10:59:33.373 回答
0

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

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

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

于 2011-11-01T03:35:47.693 回答
0

我用@Immutable 标记我的接口,以便向子类的开发人员清楚地表明实现该接口的类应该具有哪些可变性契约。正如 gehel 所说,按合同编程。

于 2012-05-06T17:05:07.850 回答