Peut annotation java complexes de retour de type HashMap
Peut annotation complexes de type de retour, tels que la table de hachage.
Je suis à la recherche de quelque chose comme:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface column {
public HashMap<String, String> table();
}
afin que je puisse avoir une constante annoté comme(pseudo-code):
@column({table=(dbName, tableName), table=(dbName, tableName2)})
public static final String USER_ID = "userid";
Si l'Annotation ne vous autorise pas à avoir de complexes de type de retour, puis les bonnes pratiques pour ce genre de cas?
- excellente question..
Vous devez vous connecter pour publier un commentaire.
Non, annotation des éléments ne peut être de type primitif, des Cordes, des
enum
types,Class
, d'autres annotations, ou des tableaux de l'un de ces. Typique de la façon de représenter ces types de structure serait de déclarer un autre type d'annotationpuis dire
Et l'utilisation de l'annotation comme
Un couple d'années plus tard, nous apporte de Java 8. Il offre un moyen de répéter les annotations de la même classe.
Dans Java 8, vous pouvez déclarer une annotation à être implicitement encapsulé dans un conteneur d'annotation. Vous déclarez comme
@Repeated(value=a_class)
une annotation que vous voulez être reproductibles. Lorsque vous ajoutez plusieurs instances d'un modèle d'annotation le compilateur va automatiquement enroulez-les dans le récipient d'annotationa_class
spécifié comme argument pour@Repeated
.Si vous déclarez:
ensuite, vous pouvez utiliser l'annotation plusieurs fois avec ou sans les emballer dans une autre annotation, les deux sont équivalents:
Les annotations sont récupérées à l'aide de
getAnnotationsByType(class)
dans les deux cas.Il devrait de sortie: