CodeGym
促銷
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • module-info.java:語法、建立模組

    JAVA 25 SELF
    等級 60,課程 1
    解析什麼是檔案 module-info.java、它在專案中的位置,以及如何用關鍵字 module 宣告模組。學習透過 exports 匯出 API、透過 requires 連結相依性,並看看其他附加指令( opens、 uses、 provides ... with)。本講座包含範例、模組命名規則、專案結構的實務講解,以及模組化建置時的常見錯誤。
    可用
  • 透過模組進行封裝:匯出與匯入

    JAVA 25 SELF
    等級 60,課程 2
    Java 9+ 如何在類與套件之上加入模組封裝:就算是 public 類別也會被隱藏,除非其套件在 exports 與 module-info.java 中明確開放。我們將說明如何用 requires 聲明相依、如何用 exports to 限制可見性、 module 層級與 private/ public 的差異,以及哪些編譯錯誤(例如「package ... is not visible」、「cannot access ...」)暗示你忘了加上 exports 或 requires。
    可用
  • 將專案拆分為模組:最佳實務

    JAVA 25 SELF
    等級 60,課程 3
    Java 模組化架構的實用指南:何時以及為何將程式碼拆分為模組、典型方案(洋蔥式架構、拆分為 api/ impl、測試模組)、透過 module-info.java 與關鍵字 requires/ exports 設定相依、三個模組的可運作專案範例、與 Maven/ Gradle 及 IntelliJ IDEA 的整合,以及常見錯誤的解析(循環相依、未匯出的封包、錯誤的 --module-path)。
    可用
  • 多模組專案的建置:Maven、Gradle、IDEA

    JAVA 25 SELF
    等級 60,課程 4
    如何在 Java 中建置模組化專案: classpath 與 module-path 的差異、何時使用旗標 --module-path、如何在 Maven 與 Gradle 中設定多模組結構,以及如何從 IntelliJ IDEA 執行全部。將展示含有 module-info.java 的模組結構、透過 requires/ exports 設定相依、外掛設定,以及建置時的常見錯誤。
    可用
  • ProcessBuilder — 啟動外部行程

    JAVA 25 SELF
    等級 61,課程 0
    說明如何在 Java 中使用類別 ProcessBuilder 來啟動外部指令與工具:它相較於 Runtime. getRuntime(). exec() 有何優勢,如何透過 directory() 設定工作目錄、透過 environment() 設定環境變數,以及如何透過 start()、 waitFor() 與串流 getInputStream()/ getErrorStream()/ getOutputStream() 來管理行程。也會討論跨平台性( cmd.exe/ ls)、如何處理 stdout/ stderr,以及常見錯誤。
    可用
  • 讀取行程輸出,操作 stdin/stdout

    JAVA 25 SELF
    等級 61,課程 1
    在 Java 中操作外部行程的實務:如何透過 stdout 搭配 Process.getInputStream() 來讀取、透過 stderr 與 Process.getErrorStream() 來接收錯誤、使用 stdin 與 Process.getOutputStream() 來寫入資料,以及使用更方便的 inputReader()/ errorReader()/ outputWriter() 方法。會說明像 java -version 這類指令的特性、為避免 deadlock 而並行讀取串流、處理編碼(例如 "UTF-8"),以及與 Python 指令碼的小型橋接。
    可用
  • 行程生命週期管理

    JAVA 25 SELF
    等級 61,課程 2
    在 Java 中管理外部行程的實務:透過 waitFor() 等待結束(包含逾時),讀取結束碼,使用 destroy()/ destroyForcibly() 正確停止,避免卡死與「殭屍」行程,別忘了處理輸出串流與例外。我們也會說明跨平台細節與常見錯誤。
    可用
  • 與行程的互動式溝通

    JAVA 25 SELF
    等級 61,課程 3
    在本講座中,我們將說明如何在 Java 中與外部程式建立「互動式」對話:寫入 stdin、從 stdout 與 stderr 讀取、避免互相阻塞( deadlock)、使用 ExecutorService 並行處理輸出、正確關閉串流,並透過 ProcessBuilder 管理 Process 的生命週期。會看看使用 Python 互動腳本與 bc 工具的範例,並討論緩衝的坑與為何需要 flush()。
    可用
  • 處理行程時的常見錯誤解析

    JAVA 25 SELF
    等級 61,課程 4
    在 Java 中與外部行程穩定互動的實用指南:如何避免因未讀取的串流 stdout/ stderr 而卡死,正確設定輸出編碼(例如 UTF-8、 CP866),考量不同平台的指令差異( ls vs dir),透過 process.exitValue() 處理存取權與結束代碼,關閉資源避免洩漏並避免互動式的相互鎖死。涵蓋對 ProcessBuilder 的正確使用、以執行緒/ ExecutorService 並行讀取串流、透過 process.destroy() 正確結束,以及使用 File.separator 的跨平台路徑。
    可用
  • 反射簡介:Class 類,為何需要

    JAVA 25 SELF
    等級 62,課程 0
    我們將說明什麼是 Java 的反射,以及它為何對框架與工具很重要;了解 Class 物件——反射的核心——如何運作,並介紹取得它的幾種方式:透過 .class、 getClass() 與 Class.forName()。我們也會討論何時該用反射、何時不必,看看如何取得中繼資料(名稱、套件、超類、介面),剖析一個小工具「這是什麼類?」以及常見錯誤( ClassNotFoundException、效能、安全性)。
    可用
  • 取得類別、欄位、方法的資訊

    JAVA 25 SELF
    等級 62,課程 1
    本講座剖析 Java 的反射:如何透過 Class API 取得欄位( getFields()/ getDeclaredFields())、方法( getMethods()/ getDeclaredMethods())、建構子( getConstructors()/ getDeclaredConstructors())與註解( getAnnotations())等資訊。也會透過 Modifier 取得修飾詞( public、 private、 protected、 static、 final),釐清「public 與 declared」的差異,組裝一個簡易的類別檢查器小工具,並看看視覺化示意圖。
    可用
  • 反射的安全性、限制與替代方案

    JAVA 25 SELF
    等級 62,課程 2
    本講座講解反射的風險與限制:透過 setAccessible( true) 繞過封裝、嘗試修改 final 欄位,以及為何這因 JVM 最佳化而危險; SecurityManager 的命運,以及模組化系統(Java 9+)如何導致 InaccessibleObjectException。還會談到效能損失與型別安全問題、現代替代方案( record、 sealed、pattern matching、APT、DI)與最佳實務。最後給出使用 JVM 參數 --add-opens 的實作範例。
    可用
  • 1
  • ...
  • 26
  • 27
  • 28
  • 29
  • 30
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • CodeGym for EDU
  • 常見問題
  • 支援
CodeGymCodeGym 是一門從零開始學習 Java 程式設計的線上課程。這門課程是初學者精通 Java 的完美方式。它包含超過 1200 題、具即時檢驗功能,以及涵蓋 Java 基礎理論的必要範圍。為了幫助你在學習上成功,我們實作了一系列激勵功能:測驗、程式專案、關於有效學習的內容,以及 Java 開發者職涯相關內容。
追蹤我們
介面語言
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia
繁體中文
Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym
MastercardVisa
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym