【问题标题】:Overwrite Annotations with Reflection?用反射覆盖注释?
【发布时间】:2013-03-12 16:02:14
【问题描述】:

我正在使用 Oval 进行验证,所以我们的代码如下所示:

   @NotNull(errorCode = "NumberInvalid")
   @NotNegative(errorCode = "NumberInvalid")
   @Range(errorCode = "NumberInvalid", min=1, max=10)
   protected Integer dollarAmount;

如果需要,我希望能够动态更新范围,例如,如果我们有一个每月左右更改的配置文件,我希望能够在验证中反映这些更改。

有没有一种方法可以通过反射来做到这一点,这样我就不必对 Oval 中的每个注释进行子类化?

【问题讨论】:

    标签: java reflection annotations config oval


    【解决方案1】:

    据我所知,这是不可能的。假设您的注释保留设置为 RUNTIME(它必须是验证才能工作),那么您将有效地拥有一个实现注释接口的代理类,您将无法通过反射修改值。

    【讨论】:

      【解决方案2】:

      虽然使用静态代码的注解看起来更干净 :) 但是...有一种方法.. 您是否尝试过使用反射?你能发布方法吗?你可以看看this

      【讨论】:

        【解决方案3】:

        反射的目的是访问类成员(包括设置字段),但不包括添加新成员或修改现有声明。你想要的更类似于bytecode editingcode refactoring

        【讨论】:

          猜你喜欢
          • 2021-03-15
          • 2011-12-08
          • 1970-01-01
          • 1970-01-01
          • 2012-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多