gpt4 book ai didi

java - 最终静态字符串编译问题。任何建议如何避免?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:57 25 4
gpt4 key购买 nike

我遇到这样一种情况,我的文件中几乎没有包含最终静态字符串变量(常量)的文件。现在,这些变量在许多使用 classname.variable 的文件中使用。这些文件存在于不同的 jar 中。第一个 jar 包含常量,第二个 jar 将包含使用常量的文件。据了解,当对使用常量的文件进行 java 编译时,classname.variable 将在编译过程中被常量本身替换。

现在,假设我更改常量的值并构建第一个 jar,应用程序将不会出现任何编译问题或运行时问题。但是在第二个 jar 中,先前的常量将存在于类文件中。我该如何避免这种情况?请提供建议。我正在使用 ANT 构建 jar 。

最佳答案

值复制行为仅适用于编译时常量。如果一个变量声明为final 并且用编译时常量初始化,则它是编译时常量。因此,您可以通过不初始化变量来强制使其成为非编译时常量:

public static final String CONSTANT_BUT_NOT_COMPILE_TIME_CONSTANT;

static {
CONSTANT_BUT_NOT_COMPILE_TIME_CONSTANT = "the value being constant at runtime";
}

这里,变量不是用常量值初始化,而是在声明之后赋值。因此它不是编译时常量,因此它的值在编译时从未被复制。它在运行时仍然是不可变的。

关于java - 最终静态字符串编译问题。任何建议如何避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26483963/

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