java - 为什么 `Throwable.detailMessage` 不是最终的?

标签 java

Throwable 具有以下字段:

private String detailMessage;

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

最佳答案

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

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

但是,坦率地说,为什么这样做并不重要。 您的代码不应该依赖于这个private变量,因此它是否是final对您来说应该没有什么区别。

<小时/>

1 - ...对我来说。

2 - 我在 OpenJDK 代码库中搜索了 detailMessage 的出现情况,其中一些结果与该理论一致。看看.../hotspot/src/share/vm/classfile/javaClasses.cpp

关于java - 为什么 `Throwable.detailMessage` 不是最终的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49606997/

相关文章:

java - 如何接收来自特定号码的短信?

java - sleep() 线程正在 hibernate 主线程,而不是单独的指定线程

java - 使用 Thymeleaf (Spring) 将代码从变量添加到 html head 标签中

java - 对象的字符串表示形式...详细与十六进制

java - 保留堆的镜像并在执行某些方法后返回它

java.lang.NoClassDefFoundError : org/apache/http/client/HttpClient

java - 如何在非静态内部类中声明接口(interface)

java - Android 版本 4.3 中的异常 android java.util.Objects

java - JNI 如何存储字符数组并将其记录在jNI中?

java - 在 Red Hat 服务器中找不到 JAVA_HOME