package 與 import 是 Java 程式碼組織與模組化的基石。本文系統梳理其核心規則、使用場景、編譯運行機制及常見誤區,助力開發者建立清晰的專案結構認知。
| 核心價值 | 具體規則 |
|---|---|
| 解決類名衝突 提供命名空間 管理類文件結構 | 1. 必須為源文件第一條非註釋語句 2. 每個源文件僅能宣告一個 package 3. 未指定則屬於預設包(不建議使用) 4. 同包下類可自由互訪(無需 import) |
package testPkg;
public class testPackage {
public static void fun1() {
System.out.println("Msg: testPackage print");
}
public static void main(String[] args) {
fun1();
}
}
import testPkg.testPackage;
public class testCallPackage {
public static void main(String[] args) {
testPackage.fun1(); // 等同於 testPkg.testPackage.fun1()
}
}
-d 參數編譯:javac -d . testPackage.java,編譯器自動生成目錄結構 testPkg/testPackage.classjava testCallPackage(在包根目錄上層執行)com.company.project → com/company/project/| 用法 | 說明 | 注意事項 |
|---|---|---|
import pkg.ClassName | 單類導入 | 推薦:明確依賴,避免命名衝突 |
import pkg.* | 通配符導入 | 僅導入該包下類,不包含子包 |
import static pkg.Class.field | 靜態導入 | 導入靜態成員/方法,如 import static java.lang.Math.PI |
當兩個包含有同名類(如 java.util.Date 與 java.sql.Date):
package declaration // 1. 包宣告(可選) import statements // 2. 導入語句(可選) class/interface definition // 3. 類/介面定義(必須)
com.company.modulecontroller、service、dao、entity掌握 Package/Import 機制,不僅是語法要求,更是構建可維護、可擴展 Java 專案的架構基石。