所相虚妄

我看的JDK11 的源码,并没有你文中的这段关于long#valueOf()的源码的注释。。。而且我觉得你只是为了翻译而翻译,你可以把“ 不同的是,此方法并没有被要求缓存特定范围的值。”说的更明白点么?

2019-12-18
3
1
回复 3
明明如月 回复 所相虚妄

本专栏所有的源码本来就是基于JDK8 的,参考资料也都是Java语言手册和虚拟机手册基于 JDK8的。 JDK 和 JVM的权威资料都是基于 源码(包括注释)和 Java语言手册 和 JVM语言手册shi最权威的参考。 啥叫“为了翻译而翻译”? JDK 11 没有这句话可能是 Java语言手册 11版本有了这种规定,所以源码也跟着改。 可以看 5.17 Boxing Conversion 小节 JDK8中 https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.7 JDK11中 https://docs.oracle.com/javase/specs/jls/se11/html/jls-5.html#jls-5.1.7

2019-12-19
明明如月 回复 所相虚妄

Integer 还是Long缓存本质上是对象池模式,既缓存一部分常用的对象,在没必要创建想对象时复用,来减少对象的创建。 只不过JDK8时 Long 没有强制规定这一段必须缓存,JDK11时和Integer一样了(我并没有说不该这样,这样不对)。 Java源码都是根据语言规范来的,语言规范里没有强制规定,源码作者就把这点区别写到了注释里。本专栏默认都是JDK8。

2019-12-19
编程从踩坑到跳坑 回复 明明如月

老师,应该是享元模式吧?

2020-05-02
没有更多内容
取消 回复 发送