是否可以将参数的值传递给注释?例如:@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
提交
取消