是否可以将参数的值传递给注释?
例如:
@MyAnnot
final List<String> list;
我希望将list
的内容传递给MyAnnot
答案 0 :(得分:0)
使用标准Java无法实现您的要求。
注释是类的一种形式,其实例可以附加到程序的各种元素上;例如类,方法,字段,参数等。对于具有保留策略RUNTIME
的注释,应用程序使用反射来检索与Class
,Method
,Field
等相关的注释。
问题在于注释与(有效)语法元素相关联,而不是与那些元素的实例相关联。例如:
public class Thing {
@MyAnnot
final List<String> list;
}
我们可以使用反射来找到Class
的{{1}}对象和Thing
的{{1}}对象。从那里,我们可以获得与Field
关联的list
注释。
但是,@MyAnnot
,Field
和Class
实例与Field
类的任何特定实例都不相关。如果您想通过@MyAnnot
注释获得Thing
的值(以某种方式),则需要(以某种方式)知道您在谈论哪个实例。
对该问题的另一种解释是,希望(以某种方式)您的应用程序每次分配给list
对象的@MyAnnot
变量时,分配的值也将传递给Thing
批注。 JVM不会这样做。这不是注释的标准行为。从理论上讲,可以实现这种功能(例如,用一些英勇的字节码重写),但我不知道有任何示例。