iT邦幫忙

2026 iThome 鐵人賽

0
Build on Google AI

把Google AI當夥伴打造個人高效Coding工作流系列 第 7 篇

第七天抽象類別、介面架構取捨與Java 8/9演進

  • 分享至 

  • xImage
  •  

一、 抽象類別、介面架構本質差異
https://ithelp.ithome.com.tw/upload/images/20261015/20184350PXywQX1aau.png
決定抽象類別還是介面,不是看能不能寫實作代碼,而是看是否需要持有維護物件的內部狀態。
如果你要透過建構子來寫相依性、在父類別裡管理具體屬性變數的生命週期就選抽象類別;如果你只是要定義一套標準,有可能需要讓完全不相干的類別都能套用就選介面。


二、Java8/9的演進

  1. Java8是Java誕生以來變化最大的一個版本,目標是讓代碼具備宣告風格並善用多核心的架構。
  • Lambda表達式與方法參考:
    改變傳統匿名內部類別過度冗長的問題,將程式碼區塊作為First-class Citizen傳遞。

  • 函數式介面(Functional Interface):
    配合Lambda 定義了@FunctionalInterface,只允許單一抽象方法。
    官方內建四大核心介面:條件判斷Predicate、消費操作Consumer、型別轉換Function、惰性產值Supplier。

  • Stream API(管線化資料流):
    將集合資料操作從指令式for迴圈升級為「管線化串接」。
    支援惰性求值與終端操作,並內建Parallel Stream降低並行計算門檻。

  • 介面演進 default與static方法:
    加入default方法提供預設的實作,解決集合框架升級時向後相容破壞的問題;static方法則讓介面具備定義工廠方法的命名空間。

  • Optional 容器型別:
    顯式表達「值可能存在或為空」,從架構層面規範API回傳值,避免呼叫引發未知的NullPointerException。

  • 全新Date&Time:
    徹底淘汰線程不安全、月份由0開始且容易出錯的Date與Calendar。
    改用不可變且線程安全的全新類別:LocalDate、LocalTime、Instant與DateTimeFormatter。

  • JVM底層移除永久代(PermGen),改用元空間(Metaspace):
    類別元資訊的儲存不再受限於固定大小的JVM堆積記憶體,改由作業系統的本地記憶體動態調度,大幅降低java.lang.OutOfMemoryError:PermGen space的風險。

2.Java 9雖然新語法不多,但對JVM底層與JDK自身結構進行了重塑。

  • JPMS平台模組系統:
    透過module-info.java引入模組化機制,宣告requires與 exports。
    達成強封裝(Strong Encapsulation),外部不再能靠Reflection強行存取未開放的internal套件。
    支援按需剪裁JDK,開發者可用jlink工具打包出僅數十MB、只包含專案必要模組的自訂微型執行環境。

  • 介面支援private方法:
    補完Java 8的遺憾。當介面內多個default方法需要共用一段邏輯時,能抽取為private方法封裝在介面內部,不對外洩漏實作細節。

  • Compact Strings:
    將String底層存放字元的結構由 char[](每個字元固定佔 2 Bytes)改為byte[]加上編碼旗標coder。

  • 集合工廠方法:
    原生支援快速建立不可變集合:List.of()、Set.of()、Map.of()。
    淘汰過去Arrays.asList()實體為可變陣列的陷阱,以及Collections.unmodifiableList()冗長的包裝寫法。

  • JShell(互動式終端機):
    首次具備像Python一樣的互動式命令列環境,不需先建專案、宣告類別與寫main方法,就能即時驗證語法與API。

  • Process API增強:
    ProcessHandle介面提供了對作業系統行程的直接控制,能精準獲取PID、父子行程樹、啟動時間與資源消耗,不再依賴呼叫系統原生指令。

  • 全新HTTP/2 Client:
    為日後Java 11正式替換老舊HttpURLConnection奠定基礎,原生支援HTTP/2、WebSocket與非同步響應流。


上一篇
第六天 多型與動態綁定機制—轉型陷阱、Pattern Matching與架構解耦
下一篇
第八天常數與靜態的架構規範——記憶體生命週期與單例模式的三種安全寫法
系列文
把Google AI當夥伴打造個人高效Coding工作流 共 13 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言