對 Java 程式碼執行程式碼輔助

JDT API 可讓其他外掛程式對某些 Java 元素執行程式碼輔助或程式碼選取。 容許這項操作的元素應該實作 ICodeAssist

運用方式有下列兩種:

在 Java 模型中,有兩個元素會實作這個介面:IClassFileICompilationUnit。 如果類別檔具有附加的程式檔,程式碼完成和程式碼選擇僅回答類別檔的結果。

程式碼完成

執行程式碼完成

呼叫 ICodeAssist.codeComplete 是以程式化的方式來執行程式碼完成的一個方法。 您在編譯單元中指定偏移,指出在這個偏移之後的程式碼完成是想要的。 另外,您也必須提供一個 CompletionRequestor 實例來接受可能的完成。

CompletionRequestor.accept 中的方法會接受所有類型的程式碼完成提議。 CompletionProposal 的方法會提供資訊來說明提議元素的文字(它的名稱、宣告類型等)、在編譯單元中插入它的提議位置,以及它的相關性。   

完成要求者可以接受許多不同類型的完成。 這個類型是 CompletionProposal.getKind 所提供的。

以下是部分可能的完成類型(您可以在 CompletionProposal 中,找到可能完成類型的完整清單):

完成要求器也必須能夠接受編譯錯誤。  

完成相關性

因為可能有許多不同的完成,所以相關性的記號是用來比較已建議的完成與其他提議的相關性。相關性是以正整數來代表。除了用來相對於其他提議的值,這個值沒有任何隱含的意義。程式碼完成候選者的相關性可以受到表示式的預期類型的影響, 因為它相對於周圍程式碼中的類型,如變數類型、強制轉型類型、傳回類型等。 完成中如果出現預期的字首或字尾,也會影響它的相關性。

程式碼完成選項

「JDT 核心」外掛程式定義用來控制程式碼完成行為的選項。 其他外掛程式可以變更這些選項。  

其他選項可讓您指定字首和字尾給提議的完成名稱,代表欄位、 static 欄位、區域變數,以及方法引數。  

請參閱 JDT 核心程式碼輔助選項,以取得程式碼輔助選項及其預設值的詳細資訊。

程式碼選擇

執行程式碼選擇

程式碼選擇是用來在編譯單元中尋找以文字範圍(通常是選取的文字)代表的 Java 元素。 如果要以程式化的方式執行程式碼選擇,您必須呼叫 ICodeAssist.codeSelect。 您必須提供選擇的起始索引位置及其長度。 結果為 Java 元素的陣列。通常陣列中只有一個元素,但是如果選擇模糊不清,則會傳回所有可能的元素。

在底下範例中,程式碼選取是針對編譯單元呼叫的。

      // 取得編譯單元
   ICompilationUnit unit = ...;
   
   // 取得偏移和長度
   int offset = ...;
   int length = ...;
   
   // 執行選取
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

位於游標位置的選擇

當選擇長度指定為 0 時,將尋找含括指定的偏移的完成記號,來計算選擇。 請考慮下列方法:

   public void fooMethod(Object) {
   }

如果您在 fooMethod 的第一個字元之後,指定一個偏移, 而且指定長度為 0,將計算選擇以包括整個記號 fooMethod。 如果您指定長度改為 5,選擇將視為 ooMet