我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
编译以上内容时,javac抱怨重复的注释:
max @ upsight:〜/ work / daybreak $ javac Dupe.java Dupe.java:5:重复注释
这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗?
如果上述方法不可行,可能有哪些解决方法?
更新:我被要求描述我的用例。开始。
我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。我想允许将索引指定为getter或setter上的注释。这是一个人为的例子:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
显然,我希望能够通过Project的各种属性快速找到Employee的实例。我可以使用不同的expr()值指定两次@Index,或者采用接受的答案中指定的方法。即使Hibernate这样做并且不被认为是黑客,我认为至少允许在单个元素上具有相同类型的多个注释仍然有意义。