为了账号安全,请及时绑定邮箱和手机立即绑定

Java注解获取其字段的值

Java注解获取其字段的值

喵喔喔 2021-07-13 17:15:54
是否可以将参数的值传递给注释?例如:@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 不会这样做。这不是注释的标准行为。理论上可以实现这样的功能(例如,通过一些英勇的字节码重写),但我不知道任何示例。


查看完整回答
反对 回复 2021-07-29
  • 1 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信