列挙型と Android アノテーション intDef 質問する

列挙型と Android アノテーション intDef 質問する

列挙型があります:

public enum AppEnums {
    SERVICE_ERROR,
    CONNECTION_ERROR;
}

Android Annotation の intDef でこれを使用したいと思います。

@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}

エラー表示:

互換性のない型が見つかりました。必須: 'long'

この非互換性に対して何ができるでしょうか?

AppEnum パラメータの値を手動で処理したくありません。Enum は通常、値を自動的に作成します。enumAppEnums.CONNECTION_ERROR.ordinal()パラメータの int 値を返しますが、ここでは機能しません。

ベストアンサー1

アノテーションの主なアイデアは、 のような定数IntDefのセットを使用することですが、intenumそれなし enumこの場合、すべての定数を手動で宣言する必要があります。

@IntDef({Status.IDLE, Status.PROCESSING, Status.DONE, Status.CANCELLED})
@Retention(RetentionPolicy.SOURCE)
@interface Status {
    int IDLE = 0;
    int PROCESSING = 1;
    int DONE = 2;
    int CANCELLED = 3;
}

詳細な例を見ることができますここ

おすすめ記事