有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring控制器路径未被视为常量

我想用path变量定义Spring的控制器路径,如下所示:

private static final String IDS_REGEX = "[" + EnumSet.allOf(MyIdsEnum.class).stream().map(MyIdsEnum.class::getValue)
  .collect(Collectors.joining("|")) + "]";
public static final String MY_PATH = "/path/{id:" + IDS_REGEX + "]}";

然后在我的控制器中:

 @PostMapping(value = MY_PATH, produces = MediaType.APPLICATION_JSON_VALUE)

但是,IntelliJ在PostMapping值中抛出一个错误:

Attribute value must be constant

路径已经是静态的final,我应该怎么做才能把它变成常量呢

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    它必须是编译时常量

    编译时常量表达式是一个表示原语类型的值或字符串的表达式,该值或字符串不会突然完成,并且仅使用以下内容组成:

    • 基元类型的文字和字符串类型的文字
    • 强制转换为基本类型和强制转换为类型字符串
    • [……]操作员[……]
    • 包含表达式为常量表达式的括号表达式
    • 引用常量变量的简单名称
    • 表单TypeName的限定名称。引用常量变量的标识符