删除“批注属性的值必须是常量表达式”消息

2022-08-31 11:17:43

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

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

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

The value for annotation attribute must be a constant expression

此问题的解决方案是什么?


答案 1

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

另请参阅此处:如何从常量 java 向注释提供值

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


答案 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 {
  // ...
}

推荐