在java中,假设我有以下内容
==fileA.java==
class A
{
public static final int SIZE = 100;
}
然后在另一个文件中我使用这个值
==fileB.java==
import A;
class b
{
Object[] temp = new Object[A.SIZE];
}
当这个被编译时SIZE
被替换为值 100,这样,如果我要替换 FileA.jar 而不是 FileB.jar,对象数组会获得新值还是会被硬编码为 100,因为这是最初构建时的值?
是的,Java 编译器确实会替换静态常量值,例如SIZE
在您的示例中使用它们的字面值。
所以,如果你以后想改变SIZE
在班上A
但你不重新编译类b
,您仍然会在课堂上看到旧值b
。您可以轻松地测试一下:
文件A.java
public class A {
public static final int VALUE = 200;
}
文件B.java
public class B {
public static void main(String[] args) {
System.out.println(A.VALUE);
}
}
编译A.java和B.java。现在运行:java B
更改 A.java 中的值。重新编译A.java,但不重新编译B.java。再次运行,您将看到打印旧值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)