相关疑难解决方法(0)

一个元素上的相同类型的多个注释?

我试图在一个元素上拍两个或多个相同类型的注释,在本例中是一个方法.这是我正在使用的近似代码:

public class Dupe {
    public @interface Foo {
      String bar();
    }

    @Foo(bar="one")
    @Foo(bar="two")
    public void haha() {}
}
Run Code Online (Sandbox Code Playgroud)

在编译上面的内容时,javac会抱怨重复的注释:

max@upsight:~/work/daybreak$ javac Dupe.java 
Dupe.java:5: duplicate annotation

是不是可以重复这样的注释?从小学的角度讲,由于内容不同,@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; }
}
Run Code Online (Sandbox Code Playgroud)

显然,我希望能够通过Project的各种属性快速查找Employee的实例.我可以使用不同的expr()值指定@Index两次,或者采用接受的答案中指定的方法.即使Hibernate这样做并且它不被认为是黑客,我认为至少允许在单个元素上具有相同类型的多个注释仍然是有意义的.

java annotations

85
推荐指数
5
解决办法
7万
查看次数

标签 统计

annotations ×1

java ×1