java - 为什么 Class.getSimpleName() 没有被缓存?

标签 java

如果您查看 Sun 实现 Class.getSimpleName() 的源代码,您会注意到它似乎每次调用它时都会返回一个新的 String 实例。然而,Class 类中的许多其他功能都被缓存了。

由于简单的名称计算似乎并不容易,而且 JavaDoc 中也没有说它每次都必须返回一个新实例,因此它应该是一个很好的缓存候选者。我想知道是否有任何设计原因不缓存它?

我问是因为许多框架一直使用简单的名称,这很容易缓存。

最佳答案

更新:名称缓存在 OpenJDK 11 中

在 OpenJDK 11 及更高版本中,类名缓存。查看 Class.java 的 OpenJDK 源代码并搜索 private ReflectionData<T> reflectionData()getSimpleName 调用的方法方法。

详情见工单JDK-8187123 .

关于java - 为什么 Class.getSimpleName() 没有被缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17369304/

相关文章:

java - 重写方法时的协变返回类型和 `List<T>' 与 'List<? extends T>'

java - 重新加载使用自定义类加载器加载的类

java - SAP JCO for Ubuntu 64 位无法初始化 sapjcorfc

java - Swing 组件如何考虑我的默认区域设置?

java - 如何将 ResultSet 对象转换为 Comparable 对象

Java 10,Intellij 警告(类未导出,在同一模块中访问)

java - Jsoup 1.7.1 错误?

java - Hadoop 分布式文件系统是否像 Google 文件系统那样支持任何更新操作?

java - 安卓随机数

java - 将钢包添加到图形数据到 XYPlot、XYShapeRenderer