這個問題在這里已經有了答案: Java:不是宣告 (2 個回答) 1 小時前關閉。
為什么我不能只構建一個陣列而不將它分配給任何東西,但我可以用一個類來做到這一點?
new int[]{1,2,3};
new Date();
第一行給出錯誤。第二行沒問題。為什么這兩個相似的陳述句表現不同?
uj5u.com熱心網友回復:
簡單的答案(正如其他人已經評論過的那樣):規范不接受它作為有效宣告。
但為什么?
該規范背后的基本原理是這種陣列構造new int[]{1,2,3};是無用的。您的任何一段代碼都無法參考該陣列,因此它會立即變成垃圾。并且陣列構造本身沒有任何有用的副作用。
另一方面,像這樣的建構式呼叫new Date();可以潛在Date地在某個注冊表中存盤對正在構造的參考,或者它可以在建構式中執行一些重要的作業,或者它可以包含無限回圈。(從軟體工程的角度來看,這些是否是一個好主意是值得懷疑的)。
雖然標準Date類不做任何這些事情,但編譯器不知道。因此,語言設計者決定該代碼模式可能有合法用法,因此允許類實體化,但不允許將陣列實體化作為其自身的宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/381449.html
上一篇:根據位掩碼拆分多個位元組
