现已推出!阅读 10 月份的新功能和修复。

浏览和编辑 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 语言支持扩展维基上详细了解 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 进行智能代码补全和签名详细信息,编辑代码也很容易。 还可以使用代码段以及各种代码操作(如生成 Getter/Setter 和组织导入)来进一步提高生产力。

Visual Studio Code 中的 Java 支持会自动检测代码中的问题,并提供快速修复建议。

有关重构和代码操作的更多详细信息,请参阅重构和源代码操作

IntelliSense

Visual Studio Code 中的 Java 代码补全由Language Support for Java™ by Red Hat 提供。 该扩展由 Eclipse 背后的相同Java 开发工具 (JDT) 提供支持,因此可以期望获得相同级别的支持。

此外,还有名为 IntelliCode 的 AI 辅助 IntelliSense。它通过将您最有可能使用的内容放在完成列表的顶部来节省您的时间。IntelliCode 建议基于数千个 GitHub 上的开源项目,每个项目都有超过 100 个星标,因此它是在高质量项目的常见用法上训练的。结合您的代码上下文,完成列表将针对这些实践进行定制。以下是 Java 中的 IntelliCode 的实际应用。

IntelliCode 与流行的 Java 库和框架(如 Java SE 和 Spring)配合良好。无论您是在进行单体 Web 应用程序还是现代微服务,它都会为您提供帮助。

创建新文件

VS Code 支持在您创建 Java 源文件时应用模板。当您在文件资源管理器中创建 .java 文件时,语言服务器将自动生成类体,并为您填充包信息

代码段

Visual Studio Code 支持各种流行的 Java 代码片段,以提高您的工作效率,例如类/接口、syserr、sysout、if/else、try/catch、静态 main 方法。使用来自 Java 语言服务器的信息,它还在选择期间提供了代码片段的预览。

例如,键入“sout”或“sysout”将生成 System.out.println() 的代码片段。
同样,键入“main”或“psvm”将生成 public static void main(String[] args) {} 的代码片段。

Code Snippet

所有快捷键的完整列表如下

代码片段快捷键

快捷键 描述
ctor 公共构造函数
dowhile Do-while 语句
foreach, iter 迭代数组或可迭代对象
fori 迭代数组
if If 语句
ifelse If-else 语句
ifnull 检查是否为空的 If 语句
ifnotnull 检查是否不为空的 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 语句

后缀代码片段快捷键

快捷键 模板内容 描述
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 if (expr == null) 创建检查表达式是否为空的 if 语句
sysout System.out.println(expr) 将受影响的字符串发送到 System.out.println(..) 调用
throw throw expr 抛出给定的异常
var T name = expr 创建新变量
while while (expr) {} 创建 while 循环