首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java clone() 怪異設計由來:從硬體控制語言到網路安全的演進妥協

     編輯:Java 相關知識

clone 設計之所以怪異,確有歷史原因。未經證實的內幕故事如下:

初衷:硬體控制語言

Java 最初設計為控制硬體的語言,與網際網路無關。作為大眾化語言,理念是「程式設計師可複製任意物件」,故 clone() 置於根類別 Object 且為 public,看似最靈活無害。

轉折:網際網路語言與安全需求

當 Java 成為終極網路程式語言,安全議題浮現:不希望任何人複製機密物件。於是為原本簡單直觀的方案打上大量補丁:

  • clone() 在 Object 中改為 protected
  • 必須覆寫並 implements Cloneable
  • 必須處理例外

Cloneable 介面的角色

只有準備呼叫 Object.clone() 時才強制檢查 Cloneable(執行期檢查)。為保持一致性(且 Cloneable 為空介面),最好仍自行實作。

這段歷史解釋了為何 clone() 設計顯得支離破碎——它是為了解決後來才出現的安全問題,而在原有架構上層層修補的結果。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved