【问题标题】:is there a way of handling this Attribute value must be constant error?有没有办法处理这个属性值必须是常量错误?
【发布时间】:2017-06-07 12:29:54
【问题描述】:

我正在尝试调用此方法:

public Response getWithPathParam(@ApiParam( 
        value = "Service group to check",
        allowableValues = ApiConstants.components,                                                   
        required = true )

但希望allowableValues 属性会得到一个可以变化的值。

我的意思是我假设 allowableValues 是一个字符串。

我想知道是否有办法从配置中读取字符串并将其传递给属性。

到目前为止,我的尝试导致了以下错误:

"属性值必须是常量"

你能帮忙吗?

【问题讨论】:

  • 你能提供一些代码吗?
  • 如果您不提供 sscce... 将很难为您提供帮助
  • 您是否要为最终字段赋值。请提供您的代码。
  • “这个方法”?方法在哪里?属性allowableValueswhat 的属性?您指的是“属性”这个词的什么上下文?总之,你的问题非常非常不清楚。
  • 他的意思可能是“注解属性的值必须是常量表达式”的错误。

标签: java


【解决方案1】:

一般来说,编译器错误只能通过修复它们的方式进行处理。 只能以某种方式处理运行时错误。

根据java语言规范,注解的参数必须是编译时常量

这意味着你无法做任何与你想做的事情很接近的事情。

【讨论】:

    【解决方案2】:

    Java不允许接受除常量以外的任何其他注解参数,所以需要将ApiConstants.components改为固定值,例如:

      class ApiConstants{
         public static final String[] CONSTANTS = {"VAL_1","VAL_2"};
      }
    

    如果你仍然想保持动态配置,那么你需要在方法本身内处理它。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 2014-10-21
    • 1970-01-01
    • 2021-12-02
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多