Javaでデフォルトでアノテーションインスタンスを作成する 質問する

Javaでデフォルトでアノテーションインスタンスを作成する 質問する

次のアノテーションのインスタンスを作成するにはどうすればよいですか (すべてのフィールドがデフォルト値に設定されています)。

    @Retention( RetentionPolicy.RUNTIME )
    public @interface Settings {
            String a() default "AAA";
            String b() default "BBB";
            String c() default "CCC";
    }

試してみましたnew Settings()が、うまくいかないようです...

ベストアンサー1

インスタンスを作成するには、以下を実装するクラスを作成する必要があります。

例えば:public class MySettings implements Annotation, Settings

しかし、特に注意する必要があるのは正しいインターフェースに従ってequalsの実装。hashCodeAnnotationhttp://download.oracle.com/javase/1.5.0/docs/api/java/lang/annotation/Annotation.html

これを何度も繰り返し実装したくない場合は、javax.enterprise.util.AnnotationLiteralクラス。これは CDI (Context Dependency Injection) API の一部です。(@コードを参照)

デフォルト値を取得するには、akuhn (旧名: Adrian) によって説明されている方法を使用できます。Settings.class.getMethod("a").getDefaultValue()

おすすめ記事