【问题标题】:Add annotation to a field during runtime [duplicate]在运行时向字段添加注释[重复]
【发布时间】:2019-02-18 11:14:16
【问题描述】:

Class MyClass 有一个带注释的数字字段编号。

class MyClass {

    @Min(10)
    Number number;
}

我想在运行时使用反射并在字段中添加一个新注释@Max(20)

怎么做?

我读过一篇文章https://www.baeldung.com/java-reflection-change-annotation-params,我找不到annotationData。没有 public 方法查看或附加或放置注释。

我使用 open-jdk-10

我在这里找到的。我想结束我的问题。 Adding Java Annotations at Runtime

【问题讨论】:

  • "I found here" 是的,那 not 如何回答您的问题?
  • 可能有更简单的方法来实现您想要的,具体取决于在运行时如何使用注释。例如,一些框架(如 Hibernate)维护内部配置并允许您使用 xml 或注释来配置您的类。在这种情况下,更改注释值或在运行时添加注释可能无论如何都不起作用(因为它可能发生得太晚),因此您需要对可能存储在其他地方的结果配置进行更改......
  • 在其他情况下,例如 CDI,有一些工具可以在加载时添加信息(CDI 会为此使用扩展名),这样您就可以添加“注释”(那些对反射,但通过其内部配置存储对 CDI 可见)。

标签: java reflection


【解决方案1】:

正如在这个答案中已经指定的那样,通过普通的 java 方式是不可能的。您可以使用 AOP,也可以通过字节码工具添加注释 Adding Java Annotations at Runtime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多