在Java 21中,除了推出很多新特性之外,一些Bug修復,也需要注意一下。因為這些改變可能在升級的時候,造成影響。
Double.toString()和Float.toString()的精度問題修復
比如:對于Double.String(1e23)
:
- 在Java 19后,輸出內(nèi)容為:
1.0E23
- 在Java 18中,輸出內(nèi)容為:
9.999999999999999E22
歡迎關注,持續(xù)更新的Java新特性專欄
IdentityHashMap的remove(key, value)和replace(key, value, newValue)的錯誤處理
IdentityHashMap
是Java中自帶的一個集合,是一個比較特殊的Map實現(xiàn)。它使用的是恒等比較(而不是equals方法)來判斷兩個鍵是否相等。
這意味著,對于同一個對象的不同引用,IdentityHashMap
會將它們視為不同的鍵,而其他Map
實現(xiàn)類則會將它們視為相同的鍵。
在Java 20之前(不含Java 20)IdentityHashMap
中的remove(key, value)
和replace(key, value, newValue)
方法,錯誤地將值參數(shù)與映射中的值進行了equals比較,這使得remove(key, value)
和replace(key, value, newValue)
方法執(zhí)行結(jié)果不如預期。
如下例子所示,Java 20之前是不對的,但Java 20之后可以正確實現(xiàn)了。
var users = new IdentityHashMap<String, User>();
String key = "abc";
users.put(key, new User("Jane Doe"));
var removed = users.remove(key, new User("Jane Doe"));
assert !removed;
如果您學習過程中如遇困難?可以加入我們超高質(zhì)量的技術交流群,參與交流與討論,更好的學習與進步!文章來源:http://www.zghlxwxcb.cn/news/detail-748493.html
歡迎關注我的公眾號:程序猿DD。第一時間了解前沿行業(yè)消息、分享深度技術干貨、獲取優(yōu)質(zhì)學習資源文章來源地址http://www.zghlxwxcb.cn/news/detail-748493.html
到了這里,關于Java 21中的兩個值得關注的Bug修復的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!