Comme indiqué dans les commentaires, la valeur par défaut ""
pour la clé d'annotation owners
crée un tableau avec un élément qui est une chaîne vide. Vous pouvez également mettre une seule chaîne "default"
là aussi qui conduirait à la création d'un tableau avec seule valeur « default »
OU
{}
simplement un tableau vide si le besoin est.
Pour tester cela, vous pouvez marquer l'annotation à la politique de rétention Runtime:
@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;
}
annoter une classe avec cette
@Unfinished(value = "")
public class AnnotatedClass {
public static void main(String[] args) {
System.out.println("");
}
}
et ensuite utiliser la réflexion pour obtenir les valeurs de la les clés de Unfinished
comme:
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()));
}
}
Les deux versions sont acceptables. 'default" "' est comme 'default {" "}' donc la valeur par défaut est array avec * un * element: chaîne vide. Si vous définissez 'default {}', la valeur par défaut est * empty * array. – Pshemo
Le tableau avec une chaîne vide. Vous pouvez également mettre une seule chaîne "default" là aussi bien ou '{}' simplement pour un tableau vide. – nullpointer