是否可以將參數的值傳遞給注釋?例如:@MyAnnot
final List<String> list;我希望將 的內容list傳遞給MyAnnot
1 回答

SMILET
TA貢獻1796條經驗 獲得超4個贊
使用標準 Java 無法滿足您的要求。
注解是類的一種形式,它的實例可以附加到程序的各種元素上;例如類、方法、字段、參數等。對于保留策略注解RUNTIME,應用程序使用反射來檢索與相關聯的注釋Class,Method,Field等等。
問題在于注釋與(有效地)句法元素相關聯,而不是這些元素的實例。例如:
public class Thing {
@MyAnnot
final List<String> list;
}
我們可以使用反射來找到 的Class對象Thing,以及 的Field對象list。從那里,我們可以獲得@MyAnnot與Field.
但是,Class,Field和@MyAnnotinstance 與您的Thing類的任何特定實例無關。如果您想list通過@MyAnnot注釋(以某種方式)獲得 的值,則需要(以某種方式)知道您在談論哪個實例。
您的問題的另一種解釋是希望(以某種方式)每次您的應用程序分配給Thing對象的list變量時,分配的值也會傳遞給@MyAnnot注釋。JVM 不會這樣做。這不是注釋的標準行為。理論上可以實現這樣的功能(例如,通過一些英勇的字節碼重寫),但我不知道任何示例。
添加回答
舉報
0/150
提交
取消