我正在嘗試在單個元素上敲擊兩個或多個相同類型的註釋,在這種情況下是一種方法。下面是我的工作的大概代碼:一個元素上有多個相同類型的註釋?
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
當編譯以上,javac的抱怨重複註釋:
[email protected]:~/work/daybreak$ javac Dupe.java Dupe.java:5: duplicate annotation
是它根本不可能再重複這樣的註解?從迂迴的角度來說,@Foo的兩個實例不是因爲內容不同而有所不同嗎?
如果以上是不可能的,什麼是一些潛在的解決方法?
更新:我已經被要求來形容我的使用情況。開始。
我建立一個語法sugarish機制,以「地圖」的POJO記錄商店,如MongoDB的。我想允許索引被指定爲getters或setter上的註釋。這裏是一個人爲的例子:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
很顯然,我希望能夠通過項目的各種屬性快速找到員工的情況。我可以用不同的expr()值指定@Index兩次,或者採用接受的答案中指定的方法。儘管Hibernate這樣做並不認爲是破解,但我認爲至少允許在單個元素上具有多個相同類型的註釋仍然有意義。
有一個努力讓這個重複規則放鬆以允許你的程序在Java 7中運行。你能描述一下你的用例嗎? – notnoop 2009-10-12 12:07:23
我已經編輯了我的問題,並說明了我爲什麼要這樣做。謝謝。 – 2009-10-12 13:46:08
在CDI中它可能很方便,可以爲多個限定符提供一個bean。例如,我試圖通過限定它在兩個地方重用一個bean「@Produces @PackageName(」test1「)@PackageName(」test2「)」 – 2012-03-05 11:13:38