質問

Javaでインターフェースに注釈を付けることができるユースケースがわかりません。

誰かが例を挙げてくれないか?

役に立ちましたか?

解決

Springで使用して、アノテーションをすべてのサブクラスに適用するインターフェースにアノテーションを付けました。たとえば、Serviceインターフェースがあり、インターフェースの実装が複数あるかもしれないが、注釈に関係なくセキュリティ注釈を適用したいとします。その場合、インターフェースに注釈を付けるのが最も理にかなっています。

他のヒント

findbugs を広範囲に使用しています。 Nullity制約を指定するために注釈を使用すると非常に便利です。実際にfindbugsを使用しなくても、コードの意図がより明確になります。これらの注釈は、クラスと同じようにインターフェース上に位置しています。あなたはそれが契約によるプログラミングの一種であると主張することができます...

例がなくても、説明するのは明確なはずです-インターフェースは振る舞いを記述し、注釈も記述できるため、それらをまとめるのは論理的に一致します。

私が使用しているユースケースはjavax / hibernate Beanの検証です。特定のクラスごとに検証を定義することを回避するためのインターフェイスを使用しています。

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

public class WebUser implements IUser {
    private Long userId;

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

その他の例、ただしローカルおよびリモートアノテーションEJB3で。 Javaドキュメントによると、

  

インターフェイスで使用する場合、指定します   ローカルビジネスとしてのインターフェイス   インターフェース。

ここでのユースケースは、インターフェースが注釈で最もよく示される特別な機能を持っていることだと思います。

多くの調査ツールでメソッドアノテーションを使用して、ユーザーがプロトコルや制限などを指定して、後で自動チェックを容易に行えるようにしました。

アノテーションは、アノテーションで何ができるかを決定するものではないため、ユーザーがインターフェースにアノテーションを付けることを許可しない正当な理由はありません。

コントラクトスタイルのプログラミングに使用できます-インターフェース(型とメソッド名)を定義するだけでなく、いくつかのセマンティクス(型の内容、前提条件、事後条件)を定義するだけではありません。

Javaで注釈がどのように機能するかを確認する必要がありますが、これはPython注釈で簡単に実行できます...

JBossでアプリケーションをデプロイする場合、インターフェースのアノテーションを使用してjmx-consoleでサービスをエクスポートできます。

RESTインターフェイスを定義するときに使用しました。 RESTeasyを使用すると、注釈付きインターフェイス(この例ではRESTInterfaceV1)を使用するRESTクライアントを作成できます。

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

アノテーションは実際にRESTインターフェースを実装するオブジェクトに複製する必要がありますが、インターフェース自体はJava RESTクライアントを作成したい人に個別に配布できます。

インターフェイスを実装するクラスが持つべきMutabilityコントラクトをサブクラスの開発者に明確に示すために、インターフェイスを@Immutableでマークします。 gehelが言うように、契約によるプログラミング。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top