gpt4 book ai didi

java - 在静态初始化程序中初始化静态最终字段不会给我编译时常量(Java)

转载 作者:行者123 更新时间:2023-11-30 11:30:17 24 4
gpt4 key购买 nike

我尝试在 servlet 中使用注释 @MultipartConfig(location=Test.MY_CONST) 。

当我使用下面的代码 1 时,它工作得很好。当我从下面使用 Code 2 时,我在编译时得到以下输出:

error: attribute value must be constant
@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. 代码 1代码 2 有什么区别?
  2. 我得到这个错误是因为@MultipartConfig 需要一个编译时常量,并将编译时常量分配给MY_CONST吗?在静态初始化程序中不会生成 MY_CONST编译时间常数?
  3. System.out.println(Test.MY_CONST) 打印的内容,对于代码 2,如果我更改 MY_CONST 的值反射(reflection)?

最佳答案

您不能更改“最终”变量。不能更改“常量”变量。也是直接初始化的。

关于java - 在静态初始化程序中初始化静态最终字段不会给我编译时常量(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com