Je suis tenter de la gifler deux ou plusieurs annotations du même type sur un seul élément, dans ce cas, une méthode. Ici l'approximative de code que je travaille avec:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
Lors de la compilation ci-dessus, javac se plaint d'une double annotation:
max@upsight:~/work/aube$ javac Dupe.java Dupe.java:5: double annotation
Est-il tout simplement pas possible de répéter les annotations de ce genre? Manière affectée de parler, ne sont pas les deux instances de @Foo ci-dessus différents, en raison de leur contenu différent?
Si ce qui précède n'est pas possible, quelles sont les solutions potentielles?
Mise à JOUR: j'ai été demandé de décrire mon cas d'utilisation. Va ici.
Je suis en train de construire une syntaxe sugarish mécanisme de "carte" Pojo du document dans les magasins comme MongoDB. Je veux permettre à des index spécifié que les annotations sur les getters ou organismes de normalisation. Voici un exemple artificiel:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
Évidemment, je veux être en mesure de trouver rapidement les instances de l'Employé par diverses propriétés de Projet. Je peux spécifier @Index à deux reprises avec différents expr() les valeurs, ou de prendre l'approche spécifié dans la accepté de répondre. Même si Hibernate fait cela, et il n'est pas considéré comme un hack, je pense qu'il a encore un sens pour au moins permettre d'avoir plusieurs annotations du même type sur un seul élément.