考虑一下这种情况:
public Class1 {
public static final String ONE = "ABC";
public static final String TWO = "DEF";
}
public Class2 {
public void someMethod() {
System.out.println(Class1.ONE + Class1.TWO);
}
}
通常,您会期望编译器内联1和2常量。然而,这种行为是有保证的吗?您是否可以在运行时在类路径中没有Class1的情况下部署Class2,并期望它与编译器无关地工作,或者这是一个可选的编译器优化吗?
编辑:到底为什么要这样做?我有一个常量,它将在应用程序的两端(通过RMI的客户端和服务器)共享,在这种特殊情况下,将常量放在只能位于分割线一侧的类中(因为它在逻辑上拥有常量值),而不是将其放在任意常量类中,因为它需要由代码的两端共享,这将是非常方便的。在编译时,它全部是一组源文件,但在构建时,它是按包划分的。
https://stackoverflow.com/questions/1406616
复制相似问题