アノテーションの要素が配列の場合のデフォルト値
こーやればできんのかと思ってた
String[] value() default new String[]{"hoge", "foo"};
でもできねー。
てきとーやってたら、こんな感じで出来た。
String[] value() default {"hoge", "foo"};
初めて知った。
というか、Eclipseで親切にこんなエラーが出るんだから、
ちゃんと訳せ>自分
The value for annotation attribute XXX.value must be an array initializer
で、なんだか時間があったので、こんなことをやってみる。
public class AnnotationTest { @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface Hoge { String[] value(); } @Hoge({"hoge", "foo"}) private String field = null; public static void main(String[] args) throws Exception { AnnotationTest instance = new AnnotationTest(); Field field = instance.getClass().getDeclaredField("field"); String[] values = field.getAnnotation(Hoge.class).value(); System.out.println(Arrays.toString(values)); values[0] = "foo"; System.out.println(Arrays.toString(values)); System.out.println(Arrays.toString(field.getAnnotation(Hoge.class).value())); } }
配列の値を変えちゃうというテスト。
これの実行結果。
アノテーションの値ってやっぱ変わらないんだなーってことで。
[hoge, foo]
[foo, foo]
[hoge, foo]
ま、当たり前か。