次のアノテーションのインスタンスを作成するにはどうすればよいですか (すべてのフィールドがデフォルト値に設定されています)。
@Retention( RetentionPolicy.RUNTIME )
public @interface Settings {
String a() default "AAA";
String b() default "BBB";
String c() default "CCC";
}
試してみましたnew Settings()
が、うまくいかないようです...
ベストアンサー1
インスタンスを作成するには、以下を実装するクラスを作成する必要があります。
java.lang.annotation.Annotation
- そして「シミュレート」したい注釈
例えば:public class MySettings implements Annotation, Settings
しかし、特に注意する必要があるのは正しいインターフェースに従ってequals
の実装。hashCode
Annotation
http://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()