摆脱"The value for annotation attribute must be a constant expression"消息



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

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

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

The value for annotation attribute must be a constant expression

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

注释的值必须是编译时常数,因此没有简单的方法可以完成您想要做的事情。

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

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

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

相关内容

最新更新