我尝试在 servlet 中使用注释 @MultipartConfig(location=Test.MY_CONST)。
当我使用下面的代码 1时,它工作得很好。当我使用下面的代码 2时,我在编译时得到以下输出:
错误:属性值必须是常量
@MultipartConfig(location=Test.MY_CONST)
代码 1
public class Test {
public static final String MY_CONST = "/constant/path";
}
代码 2
public class Test {
public static final String MY_CONST;
static {
MY_CONST = "/constant/path";
}
}
问题: 我有几个问题可以归结为“这是怎么回事? ”
- 代码 1和代码 2之间有什么区别?
- 我收到这个错误是因为@MultipartConfig 需要一个编译时间常数,并且
MY_CONST
在静态初始化程序中分配一个编译时间常数不会产生MY_CONST
一个编译时间常数吗? - 在代码 2
System.out.println(Test.MY_CONST)
的情况下,如果我使用反射更改 的值,会打印什么?MY_CONST