导航和编辑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)) 然后输入'@'命令,然后输入您要查找的符号名称。将出现一个潜在匹配项的列表,并在您输入时进行过滤。从匹配项列表中选择以导航到其位置。
窥视定义
您可以通过使用“查看定义”功能快速查看符号是如何定义的。此功能会在窥视Windows中显示定义附近的一小段代码,因此您可以在不离开当前位置的情况下查看。
要查看符号的定义,请将光标放在源代码中该符号的任何使用处,然后按⌥F12(WindowsAlt+F12,LinuxCtrl+Shift+F10)。或者,您可以从上下文菜单中选择Peek Definition(右键单击,然后选择Peek Definition)。
转到定义
您还可以通过使用“转到定义”功能快速导航到符号定义的位置。
要跳转到符号的定义,请将光标放在源代码中该符号的任何位置,然后按F12。或者,您可以选择转到定义从上下文菜单(右键单击,然后选择转到定义)。如果该符号只有一个定义,您将直接导航到其位置,否则竞争定义将显示在工具提示Windows中,如上一节所述,您必须选择要跳转到的定义。
前往超级实施
通过悬停并点击 转到超级实现 链接,您可以跟踪类的实现和覆盖的方法。

调用层级
调用层次视图显示所有从函数调用或到函数调用,并允许您深入钻取调用者和被调用者的调用关系。右键单击一个函数并选择预览 > 预览调用层次.

你也可以在函数体内右键点击并选择显示调用层次结构。

类型层次
类型层次视图显示了Java对象之间的继承关系。您可以右键单击一个类型并选择显示类型层次。
折叠区域
折叠区域可以让你折叠或展开代码片段,以便更好地查看源代码。
智能选择
使用智能选择(语义选择),您可以根据源代码中光标位置的语义信息扩展或缩小选择范围。
- 要扩展选择,请使用⌃⇧⌘→(Windows, LinuxShift+Alt+Right)。
- 要缩小选择范围,请使用⌃⇧⌘←(Windows, LinuxShift+Alt+Left)。
语义突出显示
语法高亮是一个重要功能,它允许您更高效地阅读代码。借助语义高亮,VS Code可以根据Java语言服务的符号信息提供更准确的源代码着色。
以下只是一个例子,左边是启用语义突出显示后的行为,右边是只有语法突出显示的行为。

您可以在 Java 语言支持扩展的维基 上了解更多有关 Java 语义高亮的详细信息。
使用 Spring Boot 导航代码
Spring Boot Tools 扩展为 Spring Boot 项目提供了增强的导航和代码完成支持。
@/显示所有定义的请求映射(映射路径,请求方法,源位置)@+显示所有定义的 bean(bean 名称,bean 类型,源位置)@>显示所有函数(原型实现)@显示代码中的所有Spring注解

要了解更多关于Spring Boot在Visual Studio Code中的支持,请阅读Spring Boot在Visual Studio Code中。
代码编辑
编辑代码也很容易,有IntelliSense进行智能代码补全和签名细节。您可以使用代码片段以及各种代码操作,例如生成Getters/Setters和整理导入,以进一步提高您的生产力。
Visual Studio Code中的Java支持可以自动检测代码中的问题,并为您提供快速修复建议。
关于代码重构和代码操作的更多详细信息,请参见代码重构和源操作。
智能感知
在Visual Studio Code中对Java的代码补全由Red Hat提供的Java™语言支持提供。该扩展由与Eclipse相同的Java开发工具(JDT)驱动,因此您可以期望相同水平的支持。
此外,还有由AI辅助的IntelliSense,称为IntelliCode。它通过将您最有可能使用的项放在完成列表的顶部来节省您的时间。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) {}输入:.

完整的快捷键列表如下:
代码片段快捷键
| 快捷键 | 描述 |
|---|---|
| 构造函数 | 公共构造函数 |
| 当为则 | Do-while 语句 |
| 每个,迭代 | 遍历数组或可迭代对象 |
| 福里 | 遍历数组 |
| 如果 | 如果语句 |
| 条件语句 | 条件语句 |
| 如果为空 | 如果语句检查为空 |
| 如果非空 | 如果语句检查不为空 |
| 主要,psvm | 公共静态主方法 |
| 新的 | 创建新对象 |
| 私有方法 | 私有方法 |
| 私有静态方法 | 私有静态方法 |
| 输入:prf | 私人领域 |
| 受保护的方法 | 受保护的方法 |
| 公共方法 | 公共方法 |
| 公共静态方法 | 公共静态方法 |
| 开关 | 切换语句 |
| 系统错误,错误 | 打印到标准错误 |
| 系统输出, 输出 | 打印到标准输出 |
| systrace, soutm | 打印当前方法到标准输出 |
| 尝试_捕获 | 尝试/捕获块 |
| 尝试资源 | 尝试资源语句 |
| 当 | 当语句 |
后缀片段快捷方式
| 快捷键 | 模板内容 | 描述 |
|---|---|---|
| 演员阵容 | ((SomeType) expr) | 将表达式转换为新类型 |
| 否则 | if (!表达式) | 创建一个否定的if语句 |
| 对于 | 对于(expr)中的(T item) | 创建一个 for 语句 |
| 福里 | for (int i = 0; i < expr.length; i++) | 创建一个 for 循环,用于遍历数组 |
| 对于 | for (int i = expr.length-1; i >= 0; i--) | 创建一个 for 循环,以反向顺序遍历数组 |
| 如果 | if (表达式) | 创建一个 if 语句 |
| 输入:nnull | if (表达式 != null) | 创建一个if语句并检查表达式是否不解析为null |
| 无 | if (表达式 == null) | 创建一个if语句,检查表达式是否解析为null |
| 系统输出 | System.out.println(expr) | 将受影响的字符串发送到System.out.println(..)调用 |
| 投掷 | 抛出表达式 | 抛出给定的异常 |
| 变量 | T 名称 = 表达式 | 创建一个新变量 |
| 当 | while (表达式) {} | 创建一个 while 循环 |