摆脱“注释属性的值必须是常量表达式”消息

时间:2013-05-12 15:43:00

标签: java annotations

我在代码中使用了注释,并尝试使用在运行时确定的值。

我将列表定义为static final(lst),并在此列表中添加了一些元素。

当我使用lst.get(i)时,出现编译错误:

The value for annotation attribute must be a constant expression

这个问题的解决方案是什么?

2 个答案:

答案 0 :(得分:40)

注释的值必须是编译时常量,因此没有简单的方法来执行您要执行的操作。

另见:How to supply value to an annotation from a Constant java

如果在尝试运行程序之前知道了值,可以使用一些编译时工具(ant,maven?)来配置它。

答案 1 :(得分:14)

这就是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 {
  // ...
}