Java でインターフェースに注釈を付けることができるユースケースがわかりません。
多分誰かが私に例を与えることができますか?
Spring でこれを使用して、アノテーションがすべてのサブクラスに適用されるインターフェースにアノテーションを付けました。たとえば、 Service インターフェースがあり、インターフェースの複数の実装がある場合でも、アノテーションに関係なくセキュリティ アノテーションを適用したいとします。その場合、インターフェイスに注釈を付けることが最も理にかなっています。
私が取り組んでいる使用例は、javax/hibernate Bean の検証です。特定のクラスごとに検証を定義することを避けるために、インターフェイスを使用しています。
public interface IUser {
@NotNull Long getUserId();
...
}
public class WebUser implements IUser {
private Long userId;
@Override
public Long getUserId(){
return userId;
}
...
}
例がなくても、説明するのは明らかです。インターフェイスは動作を記述し、アノテーションも記述できるため、それらをまとめることは論理的に一致します。
多くの研究ツールがメソッド注釈を使用して、後で自動チェックを容易にするためにユーザーがプロトコルや制限などを指定できるようにするのを見てきました。
注釈は、それを使って何ができるかを指示するものではないため、ユーザーがインターフェースに注釈を付けることを許可しない正当な理由はありません。
REST インターフェイスを定義するときに使用しました。RESTeasy では、注釈付きインターフェース (この例では RESTInterfaceV1) を使用する REST クライアントを作成できます。
final RESTInterfaceV1 client = ProxyFactory.create(RESTInterfaceV1.class, "http://localhost:8080/rest");
実際に REST インターフェイスを実装するオブジェクトにアノテーションを複製する必要がありますが、インターフェイス自体は、Java REST クライアントを作成したい人に個別に配布できます。
コントラクト スタイルのプログラミングに使用できます。インターフェイス (型とメソッド名) を定義するだけでなく、セマンティクス (型の内容、前提条件、事後条件) も定義するだけではなく、さらに一歩進んでください。
ただし、アノテーションが Java でどのように機能するかを確認する必要がありますが、これは Python アノテーションを使用して簡単に行うことができます...
インターフェイスを @Immutable でマークして、サブクラスの開発者にインターフェイスを実装するクラスが持つべき Mutability コントラクトを明確に示します。ゲーヘルが言うように、契約によるプログラミング。
JBoss でアプリケーションをデプロイする場合、インターフェースで注釈を使用して、jmx-console でサービスをエクスポートできます。