Java 模型是一組類別,可將建立、編輯和建置 Java 程式相關聯的物件模塑化。 Java 模型類別是定義在 org.eclipse.jdt.core。 這些類別實作資源的 Java 特定行為,並進一步將 Java 資源分解成模型元素。
套件 org.eclipse.jdt.core 定義類別,可將組成一個 Java 程式的元素模型化。 JDT 使用一個記憶體中物件模型來呈現 Java 程式的結構。 這個結構起源於專案的類別路徑。 這個模型為階層式。一個程式的元素可分解成數個子元素。
運用 Java 元素類似於運用資源物件。當您使用 Java 元素時, 實際上是使用一個控點來處理一些基礎的模型物件。您必須使用 exists() 通訊協定來判定元素是否確實存在於工作區中。
下列表格彙總各種不同的 Java 元素。
元素 | 說明 |
---|---|
IJavaModel | 代表對應於工作區的根 Java 元素。所有具有 Java 性質之專案的母項。 它也可讓您存取沒有 Java 性質的專案。 |
IJavaProject | 代表工作區中的一個 Java 專案。( IJavaModel 的子項) |
IPackageFragmentRoot | 代表一組套件片段,將片段對映到基礎的資源,可能是資料夾、JAR 或 ZIP 檔案。 (IJavaProject 的子項) |
IPackageFragment | 代表工作區的一部分,對應於整個套件或套件的一部分。 (IPackageFragmentRoot 的子項) |
ICompilationUnit | 代表 Java 程式檔 (.java)。( IPackageFragment 的子項) |
IPackageDeclaration | 代表編譯單元中的一個套件宣告。(ICompilationUnit 的子項) |
IImportContainer | 代表編譯單元中匯入宣告的套件集合。(ICompilationUnit 的子項) |
IImportDeclaration | 代表單一套件匯入宣告。(IImportContainer 的子項) |
IType | 代表編譯單元中的一個程式類型,或類別檔中的一個二進位類型。 |
IField | 代表類型中的一個欄位。(IType 的子項) |
IMethod | 代表類型中的一個方法或建構子。(IType 的子項) |
IInitializer | 代表類型中的一個 static 或實例初值設定。(IType 的子項) |
IClassFile | 代表一個已編譯的類型(二進位碼)。( IPackageFragment 的子項) |
所有 Java 元素皆支援 IJavaElement 介面。
有些元素顯示在「套件」視圖中。這些元素會實作 IOpenable 介面,您必須先開啟這些元素才能導覽。 下列圖例顯示「套件」視圖中如何呈現這些 元素。
實作 IOpenable 的 Java 元素主要根據從基礎資源檔中找到的資訊來建立的。 相同的元素通常呈現在資源導覽器視圖中。
其他元素則對應於一個 Java 編譯單元的組成項目。下列圖例 顯示一個 Java 編譯單元和一個內容概要畫面,其中顯示編譯單元中的程式元素。
這些元素實作 ISourceReference 介面,因為它們可以提供對應的程式碼。(在內容概要畫面中選取這些元素時,Java 編輯器中會 顯示其對應的程式碼)。
大部分的 Java 元素會對應至工作區中的通用資源。 當您想從通用資源來建立 Java 元素時, JavaCore 類別是最理想的起點。下列程式碼片段顯示如何從對應的資源中取得 Java 元素。
private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) { IJavaProject myJavaProject= JavaCore.create(myProject); if (myJavaProject == null) // 這個專案非針對 Java 來配置(沒有 Java 的本質) return; // 取得套件片段或套件片段根目錄 IJavaElement myPackageFragment= JavaCore.create(myFolder); // 取得 .java(編譯單元)、.class(類別檔),或 // .jar(套件片段根目錄) IJavaElement myJavaFile = JavaCore.create(myFile); }
一旦具有 Java 元素,您就可以使用 JDT API 來遍訪和查詢模型。 您也可以查詢 Java 元素內含的非 Java 資源。
private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) { ... // 取得我的專案內含的非 Java 資源。 Object[] nonJavaChildren = myJavaProject.getNonJavaResources(); ...
當您使用一個簡單的專案來建立 Java 專案時, JavaCore 會檢查看看這個專案是否配置有 Java 本質。 JDT 外掛程式會使用專案本質, 將專案指定為具有 Java 行為。在「新建 Java 專案」精靈建立專案時,會將這個本質 (org.eclipse.jdt.core.JavaCore#NATURE_ID) 指定給 專案。如果專案中未配置 Java 本質, 則當要求 JavaCore 建立專案時,將會傳回空值。
JavaCore 亦用來維護 Java 類別路徑,包括用來尋找程式碼和程式庫的位置,以及產生輸出二 進位檔 (.class) 的位置。
Java 專案有哪些獨特性質?Java 專案會將其類別路徑記錄在一個 ".classpath" 檔 案中,並將 Java 增量專案建置器新增到專案的建置規格中。 否則,會只是一般的專案,而可由外掛程式為其配置其他的本質(以及其他的增量建置器)。外掛程式除了以本身的行為來配置專案外,如果還想以 Java 的行為來配置專案,通常 會使用 NewJavaProjectWizardPage 來指定本身之自訂本質或行為以外的 Java 本質給專案。
IJavaModel 可視為具有 Java 專案本質的工作區中所有專案的母項(因此可視為 IJavaProject)。