Brian Goetz 在最近一篇关于 InfoQ 的文章中提到 make会String
final
导致问题:
我们为这种紧张付出代价的一个很好的例子是 String;字符串不可变对平台的安全性至关重要,因此 String 不能公开扩展——但如果实现具有多个子类型会非常方便。(解决此问题的成本很高;紧凑字符串通过对仅由 Latin-1 字符组成的字符串进行特殊处理,显着提高了占用空间和性能,但如果 String 是一个密封类,这样做会更容易也更便宜而不是最后一个。)
他还提到创建一个final
类sealed
是向后兼容的:
这是一个二进制和源代码兼容的更改,以使现有的最终类密封。密封您尚未控制所有实现的非最终类既不兼容二进制也不兼容源。
有没有打算回到final
Java 平台中的这些类中,并改为使用它们sealed
来获得性能优势(即,使用一些高性能实现String
sealed
来代替)?final