猿问

Java注解获取其字段的值

是否可以将参数的值传递给注释?

例如:

@MyAnnot
final List<String> list;

我希望将 的内容list传递给MyAnnot


喵喔喔
浏览 454回答 1
1回答

SMILET

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

相关分类

Java
我要回答