合成物件深層複製:OceanReading 範例與遞迴 clone 模式
深層複製合成物件時,必須假設成員物件的 clone() 也能正確深層複製其參考,以此類推。這要求對所有涉及類別的代碼有控制權,或至少完整掌握其深層複製正確性。
Vector 深層複製實戰:元素級 clone() 遍歷與驗證
回顧前文 Vector 範例,此次 Int2 實作 Cloneable,可對 Vector 進行真正深層複製: //: AddingClone.java im
Java 序列化實現深層複製:效能對比與穩定性分析
對象序列化後再反序列化,實質經歷一個「複製」過程。為何不直接用序列化做深層複製?以下程式碼對比兩種方法效能: //: Compete.java import
Java 繼承層級中插入 Cloneable:HorrorFlick 範例解析
新建類別預設繼承 Object 且無複製能力。可在任一繼承層級加入複製能力,之後所有子類自動擁有: //: HorrorFlick.java import j
Java clone() 怪異設計由來:從硬體控制語言到網路安全的演進妥協
clone 設計之所以怪異,確有歷史原因。未經證實的內幕故事如下: 初衷:硬體控制語言 Java 最初設計為控制硬體的語言,與網際網路無關。作為大眾化語言,理念
Java clone() 控制機制完整指南:六種策略與實作範例
單純將 clone() 設為 private 無法禁用複製(衍生類無法縮小存取範圍)。針對類別的複製能力,有六種控制策略: 保持中立:不處理複製。衍生類自行決
Java 複製建構子缺陷分析:為何 C++ 模式在 Java 失效
複製建構子是 C++ 基礎機制,可自動產生本地副本。但在 Java 並不適用。以下範例展示完整複製建構子實作與其失效場景: //: CopyConstruct
Java 唯讀類別與可變包裝器:Integer vs 自訂 IntValue 實戰
clone() 雖能產生本地副本,但程式設計師必須自行防範別名副作用。若提供通用庫無法保證正確克隆,或想保留別名優勢(避免不必要複製)卻避免副作用,該如何處理?
建立 Java 唯讀類別:Immutable1 範例與別名免疫機制
完全可自行建立唯讀類別。下例示範 Immutable1: //: Immutable1.java public class Immutable1 {
不可變物件的代價與「夥伴類」模式:以 Mutable/Immutable2 為例
不可變類別看似優雅,但頻繁修改時需不斷建立新物件,導致大量 GC 壓力。對 String 等類別代價過高。 解決方案:可變夥伴類 建立可變夥伴類(Mutable
Java 不變字串機制:String 不可變性設計與 StringBuffer 效能優化
觀察下列代碼: //: Stringer.java public class Stringer { static String upcase(Stri
Java String 與 StringBuffer 核心方法完整對照表
整理 String 與 StringBuffer 共通與各自關鍵方法,掌握兩者溝通方式。表格僅含討論相關核心方法,被覆寫方法以單行摘要。 String 類別核心
Java clone() 機制深度解析:淺層複製、深層複製與替代方案
Java 所有物件皆在堆積區建立,透過參考(handle)操作,垃圾收集器自動管理記憶體。這簡化了物件傳遞與返回,但帶來兩大代價: 額外記憶體管理效率損耗(雖
Java GUI 發展史:從 AWT 1.0 到 Swing 的視窗與 Applet 建立之路
Java 1.0 AWT 目標是跨平台統一 GUI,但事與願違:各平台顯示效果同樣欠佳,僅支援四種字體,無法存取 OS 高階 GUI 元件,程式模型非物件導向且
J2ME 入門必讀:手機遊戲開發環境選擇與配置完整筆記
這是給初學者的手機遊戲開發心得,涵蓋開發環境選擇、平台比較與 J2ME 實戰配置。 是否必須購買真機? 初學階段不必買真機,先在模擬器練習。但若要產品化,建議配
為何仍需學習 Java 舊版 AWT?歷史包袱與演進脈絡
舊版 AWT 在物件導向設計與 GUI 開發套件設計上表現不盡如人意,被評為「拙劣、可怕、惡劣」。它將程式設計拉回黑暗年代:每個事件都需手寫代碼,連其他環境用「
Java Applet 基礎入門:架構、生命週期與 HTML 整合
程式庫通常依功能組織。Java 標準庫中的 String 和 Vector 即屬此類。另一些庫專為建構其他庫而設計,提供應用程式框架——透過繼承框架類別並覆寫特
Java Applet 測試全攻略:本地測試、部署陷阱與 Package 路徑問題
無需建立網路連線即可進行簡易測試:啟動瀏覽器開啟包含 <applet> 標籤的 HTML 檔案即可。Sun JDK 內建的「Applet Viewe