摆脱“用于注释属性的值必须是一个常量表达式”消息[重复](Get rid of “The value

2019-09-02 18:07发布

这个问题已经在这里有一个答案:

  • 如何从一个恒定的Java提供的价值注释 5个回答

我用注释在我的代码,我尝试使用它决定在运行时间值。

我定义我的列表作为static final (LST),我添加到这个列表中的某些元素。

当我使用lst.get(i) ,我得到的编译错误:

The value for annotation attribute must be a constant expression

什么是这个问题的解决?

Answer 1:

一个注解的值必须是一个编译时间常数,所以做你正在尝试做的没有简单的方法。

另请参见这里: 如何从一个恒定的Java提供价值的注释

它可以使用一些编译时工具(Ant,Maven的?)来配置它,如果该值知道你尝试运行程序之前。



Answer 2:

这是Java中的常量表达式是这样的:

package com.mycompany.mypackage;

public class MyLinks {
  // constant expression
  public static final String GUESTBOOK_URL = "/guestbook";
}

你可以用注解如下使用它:

import com.mycompany.mypackage.MyLinks;

@WebServlet(urlPatterns = {MyLinks.GUESTBOOK_URL})
public class GuestbookServlet extends HttpServlet {
  // ...
}


文章来源: Get rid of “The value for annotation attribute must be a constant expression” message [duplicate]