浏览和编辑 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。或者,您可以从上下文菜单中选择“转到定义”(右键单击,然后选择“转到定义”)。当符号只有一个定义时,您将直接导航到其位置,否则竞争的定义将显示在查看窗口中,如上一节所述,您必须选择要转到的定义。

转到超级实施

您可以通过单击鼠标悬停时的“转到超级实现”链接来跟踪类实现和重写方法。

春季导航

调用层次结构

调用层次结构视图显示来自或到函数的所有调用,并允许您深入了解调用者的调用者和调用的调用。右键单击函数并选择Peek > Peek Call Hierarchy

调用层次结构一览

您还可以右键单击函数体并选择Show Call Hierarchy

呼叫层次结构菜单

类型层次结构

类型层次结构视图显示了 Java 对象之间的继承关系。您可以右键单击类型并选择“显示类型层次结构”

折叠区域

折叠区域允许您折叠或展开代码片段以更好地查看源代码。

智能选择

通过智能选择(语义选择),您可以根据源代码中插入符位置的语义信息来扩大或缩小选择范围。

  • 要扩大选择范围,请使用⌃⇧⌘→(Windows、Linux Shift+Alt+Right
  • 要缩小选择范围,请使用⌃⇧⌘←(Windows、Linux Shift+Alt+Left

语义突出显示

语法突出显示是一项重要功能,可以让您更有效地阅读代码。借助语义突出显示,VS Code 可以根据来自 Java 语言服务的符号信息提供更准确的源代码着色。

下面只是一个例子,左边是启用语义高亮后的行为,右边是仅语法高亮的行为。

语义突出显示

您可以在Java 语言支持扩展 wiki上了解有关 Java 语义突出显示的详细信息。

使用 Spring Boot 导航代码

Spring Boot Tools扩展为 Spring Boot 项目提供增强的导航和代码完成支持。

  • @/显示所有定义的请求映射(映射路径、请求方法、源位置)
  • @+显示所有已定义的 bean(bean 名称、bean 类型、源位置)
  • @>显示所有功能(原型实现)
  • @显示代码中所有 Spring 注解

春季导航

要了解有关 Visual Studio Code 的 Spring Boot 支持的更多信息,请阅读Visual Studio Code 中的 Spring Boot

代码编辑

使用 IntelliSense 实现智能代码补全和签名详细信息,编辑代码也很容易。您可以使用代码片段以及各种代码操作(例如生成 Getter/Setter 和组织导入)来进一步提高工作效率。

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

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

智能感知

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

此外,还有名为IntelliCode的人工智能辅助 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、静态 main 方法。使用来自 Java 语言服务器的信息,它还可以在选择过程中提供代码片段的预览。

例如,输入“ sout ”或“ sysout ”将生成System.out.println().
同样,输入“ main ”或“ psvm ”将生成public static void main(String[] args) {}.

代码片段

下面列出了完整的快捷键列表:

代码片段快捷方式

快捷键 描述
ctor 公共构造函数
dowhile Do-while 语句
foreach, iter 迭代数组或 Iterable
fori 迭代数组
if 如果语句
ifelse if-else 语句
ifnull if 语句检查 null
ifnotnull If 语句检查不为空
main, psvm 公共静态主方法
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_resources 尝试使用资源声明
while while 语句

Postfix 代码片段快捷方式

快捷键 模板内容 描述
cast ((SomeType) 表达式) 将表达式转换为新类型
else if (!expr) 创建一个否定的 if 语句
for 对于(T 项: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 语句
nnull if (expr != null) 创建 if 语句并检查表达式是否未解析为 null
null if (expr == null) 创建一个 if 语句来检查表达式是否解析为 null
sysout System.out.println(expr) 将受影响的字符串发送到 System.out.println(..) 调用
throw 抛出表达式 抛出给定的异常
var T 名称 = 表达式 创建一个新变量
while while (表达式) {} 创建一个 while 循环