【发布时间】:2021-01-07 10:14:43
【问题描述】:
目前,我正在开发一个 spring-boot 应用程序,其余控制器之一如下所示:
@RequestMapping(value = VALUE)
public class SomeControllerClass {
public final static String VALUE = UUID.randomUUID().toString();
...
}
在开发时,我在为@RequestMapping 设置 VALUE 时遇到了这个问题
属性值必须是常量
但是,如果我更改静态字段分配,如下所示,一切正常:
public final static String VALUE = "someValue";
现在,我想知道以下之间有什么区别(就java常量含义而言):
public final static String VALUE = "someValue";
和 public final static String VALUE = UUID.randomUUID().toString()
【问题讨论】:
-
嗯,你需要的是一个编译时间常数,
UUID.randomUUID().toString()显然不能满足这个要求。 -
它必须是编译时常量,而不是运行时常量。
-
您的值可能是可变的,不符合最终静态值的要求..
-
@AbdulKayuem 怎么可能改变? VALUE 是一个
final字段 -
注解值必须是一个编译时常量。您使用多个方法调用来初始化该字段,这些方法调用可以(在您的情况下将)在每次初始化类时产生不同的值。这不适用于注释,因为它们的值是在编译时确定的,而不是在运行时确定的。
标签: java spring compiler-errors static constants