接口上的注释?

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

也许有人可以举个例子?

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

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

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

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

public interface IUser { @NotNull Long getUserId(); ... } public class WebUser implements IUser { private Long userId; @Override public Long getUserId(){ return userId; } ... } 

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

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

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

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

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

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

我必须检查注释如何在Java中工作,但这些东西很容易用Python注释完成…

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

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

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

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

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