如註釋中所標記的,註釋密鑰owners
的默認值""
將創建一個數組,其元素爲空字符串。你也可以把一個字符串"default"
在那裏,以及這將導致只是爲了如果需要爲空數組創建僅值「默認」的數組
OR
{}
。
爲了測試這一點,你可以標記與運行時保留策略註解爲:
@Unfinished("Just articleware")
@Retention(RetentionPolicy.RUNTIME) // mark with Runtime retention policy
public @interface Unfinished {
enum Priority {LOW, MEDIUM, HIGH}
String value();
String[] owners() default "";
Priority priority() default Priority.MEDIUM;
}
註釋本
@Unfinished(value = "")
public class AnnotatedClass {
public static void main(String[] args) {
System.out.println("");
}
}
,然後使用反射來獲取的值的類Unfinished
的密鑰爲:
public static void main(String[] args) throws Exception {
System.out.println("Testing...");
Class<AnnotatedClass> obj = AnnotatedClass.class;
if (obj.isAnnotationPresent(Unfinished.class)) {
Annotation annotation = obj.getAnnotation(Unfinished.class);
Unfinished unfinished = (Unfinished) annotation;
System.out.println(Arrays.toString(unfinished.owners()));
}
}
兩個版本都可以接受。 'default「」'就像'default {「」}'所以默認值是* 1 *元素的數組:空字符串。如果你設置了'default {}',那麼默認值是* empty * array。 – Pshemo
帶有空字符串的數組。你也可以在那裏放一個單一的字符串「default」,或者簡單地爲一個空數組。 – nullpointer