代码之家  ›  专栏  ›  技术社区  ›  ike3

类文件中复制的IBM Java V9静态字段引用

  •  2
  • ike3  · 技术社区  · 7 年前

    我在ibmwebsphereappserver7.0上部署了两个位于不同jar中的java类(它有点旧,但我不得不在项目中使用它)。

    第一个类有一个静态final字段:

    public class TFFVERSION {
        public static final String ACTUAL_VERSION = "8.3";
    }
    

    第二个在非静态方法中使用字段:

    xslTemplate = String.format("%s_v%s", xslTemplate, TFFVERSION.ACTUAL_VERSION);
    

    我想了解的是为什么编译器会把 8.3 在里面 String.format 打电话?这使得不重新编译和重新部署第二个类就无法更改第一个类。

    这是一种优化还是ibm java v9中的bug?

    在这里,我在一个显示问题的文本编辑器中打开了类文件(可以单击图像以获得更好的分辨率): enter image description here

    Java反编译器显示了正确的静态字段调用。没有其他的了 8.3条 第二类中的常量。

    1 回复  |  直到 7 年前
        1
  •  2
  •   ewramner    7 年前

    这是它通常的工作方式,它是由javac而不是ibm的java版本完成的。创建两个类,其中一个使用另一个的静态final常量并运行,然后仅使用该常量重新编译该类并查看发生了什么。或者看看字节码。

    如果您希望能够更改常量,请使用方法公开它,并在运行时支付较小的性能成本。