代码之家  ›  专栏  ›  技术社区  ›  Dean Xu

为什么要扔掉。detailMessage`不是最终信息?

  •  0
  • Dean Xu  · 技术社区  · 6 年前

    Throwable 具有以下字段:

    private String detailMessage;
    

    为什么该字段不是最终字段。除了构造函数之外,它永远不会被修改。甚至永远无法访问,除非 getMessage

    1 回复  |  直到 6 年前
        1
  •  2
  •   Stephen C    6 年前

    没有明显的 1. 原因在的Java源代码中 Throwable 它本身

    这是可能的 2. Java SE代码库中的某些代码需要能够使用反射或其他“后门”机制修改异常消息。也有可能过去有,或者将来会有。

    但是,坦率地说,为什么要这样做并不重要。 你的 代码不应依赖于此 private 变量,所以它是否为 final 或者不是。


    1-。。。对我来说。

    2-我在OpenJDK代码库中搜索 detailMessage 一些热门歌曲与这一理论是一致的。看看 .../hotspot/src/share/vm/classfile/javaClasses.cpp