如果您查看 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/