現已釋出!閱讀關於 11 月新增功能和修復的內容。

導航和編輯 Java 原始碼

Visual Studio Code 首先是一個原始碼編輯器,具備豐富的編輯 功能。在本教程中,我們將介紹一些在處理 Java 時有用的特定於 Java 的功能。

如果您在使用以下功能時遇到任何問題,可以透過提交問題聯絡我們。

程式碼導航

透過 大綱檢視,您可以方便地導航當前檔案中的成員。專案檢視 也提供了對專案的整體概覽。作為 Java 編輯器,它還支援呼叫層次結構、型別層次結構、定義導航、工作區中的型別搜尋等。

搜尋符號

您可以搜尋當前檔案或工作區中的符號,以更快地導航程式碼。

搜尋工作區中的符號

要搜尋當前工作區中的符號,請按 ⌘T (Windows, Linux Ctrl+T),然後輸入符號的名稱。將出現潛在匹配項的列表。如果您選擇了一個在尚未開啟的檔案中找到的匹配項,該檔案將在導航到匹配項的位置之前被開啟。或者,您也可以使用 **快速開啟** (⌘P (Windows, Linux Ctrl+P)) 然後輸入 '#' 命令來搜尋當前工作區。⌘T (Windows, Linux Ctrl+T) 只是 '#' 命令的快捷方式,所以一切都一樣。

搜尋當前檔案中的符號

要搜尋當前檔案中的符號,請使用 **快速開啟** (⌘P (Windows, Linux Ctrl+P)),然後輸入 '@' 命令,接著輸入您要查詢的符號名稱。當您鍵入時,將出現並過濾潛在的匹配項列表。從匹配項列表中選擇以導航到其位置。

速覽定義

您可以使用“檢視定義”功能快速檢視符號的定義方式。此功能會在一個檢視視窗中顯示定義附近的幾行程式碼,因此您無需離開當前位置即可檢視。

要檢視符號的定義,請將游標放在原始碼中該符號的任何使用位置,然後按 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10)。或者,您可以從上下文選單(右鍵單擊,然後選擇“檢視定義”)中選擇“檢視定義”。

轉到定義

您也可以使用“轉到定義”功能快速導航到符號的定義位置。

要轉到符號的定義,請將游標放在原始碼中該符號的任何使用位置,然後按 F12。或者,您可以從上下文選單(右鍵單擊,然後選擇“轉到定義”)中選擇“轉到定義”。當符號只有一個定義時,您將直接導航到其位置;否則,競爭的定義將顯示在檢視視窗中,如前一節所述,您必須選擇要轉到的定義。

轉到父實現

您可以透過單擊懸停時的“轉到父實現”連結來跟蹤類實現和重寫方法。

Spring Navigation

呼叫層次結構

呼叫層次結構檢視顯示了來自或到某個函式的全部呼叫,並允許您深入檢視呼叫者的呼叫者以及被呼叫的呼叫。右鍵單擊一個函式並選擇“檢視”>“檢視呼叫層次結構”。

Call Hierarchy Peek

您也可以在函式體中右鍵單擊並選擇“顯示呼叫層次結構”。

Call Hierarchy Menu

型別層次結構

型別層次結構檢視顯示了 Java 物件之間的繼承關係。您可以右鍵單擊一個型別並選擇“顯示型別層次結構”。

摺疊區域

摺疊區域允許您摺疊或展開程式碼片段,以便更好地檢視原始碼。

智慧選擇

藉助 智慧選擇(語義選擇),您可以根據原始碼中插入點位置的語義資訊來擴充套件或收縮選區。

  • 要擴充套件選區,請使用 ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
  • 要收縮選區,請使用 ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)

語義高亮

語法高亮是一項重要功能,可讓您更有效地閱讀程式碼。藉助 語義高亮,VS Code 可以根據 Java 語言服務的符號資訊提供更準確的原始碼著色。

下面是一個例子,左側是啟用語義高亮後的行為,右側是僅有語法高亮時的行為。

Semantic Highlighting

您可以在 Java Language Support 擴充套件 wiki 上了解有關 Java 語義高亮的更多詳細資訊。

使用 Spring Boot 導航程式碼

Spring Boot Tools 擴充套件為 Spring Boot 專案提供了增強的導航和程式碼補全支援。

  • @/ 顯示所有定義的請求對映(對映路徑、請求方法、源位置)
  • @+ 顯示所有定義的 Bean(Bean 名稱、Bean 型別、源位置)
  • @> 顯示所有函式(原型實現)
  • @ 顯示程式碼中的所有 Spring 註釋

Spring Navigation

要了解有關 Visual Studio Code 的 Spring Boot 支援的更多資訊,請閱讀 Visual Studio Code 中的 Spring Boot

程式碼編輯

藉助 IntelliSense 進行智慧程式碼補全和簽名詳細資訊,程式碼編輯也變得輕鬆。您可以使用程式碼片段以及各種程式碼操作(如生成 Getters/Setters 和組織匯入)來進一步提高您的工作效率。

Visual Studio Code 中的 Java 支援會自動檢測程式碼中的問題,併為您提供快速修復建議。

有關重構和程式碼操作的更多詳細資訊,請參閱 重構和原始碼操作

IntelliSense

Visual Studio Code 中 Java 的程式碼補全由 Language Support for Java™ by Red Hat 提供。該擴充套件由 Eclipse 背後的 Java Development Tools (JDT) 提供支援,因此您可以期待相同級別的支援。

此外,還有一種稱為 IntelliCode 的 AI 輔助 IntelliSense。它透過將最可能使用的內容放在補全列表的頂部來節省您的時間。IntelliCode 的建議基於 GitHub 上數千個獲得 100 顆以上星標的開源專案,因此它是在最常見的用法中經過訓練的。當與程式碼的上下文結合時,補全列表會經過定製,以推廣這些實踐。以下是 IntelliCode for Java 的實際應用。

IntelliCode 與 Java SE 和 Spring 等流行的 Java 庫和框架配合良好。無論您是構建單體 Web 應用還是現代微服務,它都會為您提供幫助。

建立新檔案

VS Code 支援在建立 Java 原始檔時應用模板。當您在檔案資源管理器中建立 .java 檔案時,語言伺服器會自動生成類主體,併為您填充包資訊。

程式碼片段

Visual Studio Code 支援各種流行的 Java 程式碼片段,讓您更高效,例如類/介面、syserr、sysout、if/else、try/catch、static main 方法。利用 Java 語言伺服器的資訊,它還在選擇過程中提供程式碼片段的預覽。

例如,鍵入“**sout**”或“**sysout**”將生成 System.out.println() 的程式碼片段。
同樣,鍵入“**main**”或“**psvm**”將生成 public static void main(String[] args) {} 的程式碼片段。

Code Snippet

完整的快捷方式列表如下

程式碼片段快捷方式

快捷鍵 描述
ctor 公共建構函式
dowhile Do-while 語句
foreach, iter 遍歷陣列或 Iterable
fori 遍歷陣列
if If 語句
ifelse If-else 語句
ifnull 檢查 null 的 If 語句
ifnotnull 檢查非 null 的 If 語句
main, psvm 公共靜態 main 方法
new 建立新物件
private_method 私有方法
private_static_method 私有靜態方法
prf 私有欄位
protected_method 保護方法
public_method 公共方法
public_static_method 公共靜態方法
switch Switch 語句
syserr, serr 列印到標準錯誤
sysout, sout 列印到標準輸出
systrace, soutm 將當前方法列印到標準輸出
try_catch Try/catch 塊
try_resources Try-with-resources 語句
while While 語句

Postfix 程式碼片段快捷方式

快捷鍵 模板內容 描述
cast ((SomeType) expr) 將表示式轉換為新型別
else if (!expr) 建立否定的 if 語句
for for (T item : expr) 建立 for 語句
fori for (int i = 0; i < expr.length; i++) 建立一個遍歷陣列的 for 語句
forr for (int i = expr.length-1; i >= 0; i--) 建立一個反向遍歷陣列的 for 語句
if if (expr) 建立 if 語句
nnull if (expr != null) 建立一個 if 語句並檢查表示式是否不等於 null
null if (expr == null) 建立一個 if 語句,檢查表示式是否等於 null
sysout System.out.println(expr) 將受影響的字串傳送到 System.out.println(..) 呼叫
throw throw expr 丟擲給定的異常
var T name = expr 建立新變數
while while (expr) {} 建立 while 迴圈
© . This site is unofficial and not affiliated with Microsoft.