导航和编辑 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),然后输入“@”命令,再输入你要找的符号名称。随着你输入,潜在匹配名单将被显示并筛选。从匹配列表中选择,导航到其所在位置。

Peek 定义

你可以快速查看“窥视定义”功能,了解符号是如何定义的。该功能会在预览窗口中显示定义附近几行代码,方便你查看而不用离开当前位置。

要查看符号的定义,只需将光标放在源代码中该符号使用的位置,然后按⌥F12(Windows Alt+F12,Linux Ctrl+Shift+F10)。或者,你也可以在右键菜单中选择“窥定义”(右键,然后选择窥定义)。

前往定义

你还可以使用“前往定义”功能快速导航到符号定义的位置。

要进入符号定义,将光标放在源代码中该符号出现的任意位置,然后按F12。或者,你也可以在右键菜单中选择“前往定义”(右键点击,然后选择“前往定义”)。当符号只有一个定义时,你将直接导航到其位置,否则竞争定义会显示在前一节描述的窥视窗口中,你必须选择你想去的定义。

前往超级实现

你可以通过鼠标悬停点击“前往超级实现”链接来跟踪类实现和覆盖方法。

春季航行

呼叫层级

呼叫层级视图显示所有来自或调用某个函数的呼叫,并允许你深入挖掘调用者的调用者和调用的调用。右键点击一个功能,选择“窥视”>“窥视呼叫层级”。

呼叫层级窥视

你也可以在函数主体中右键点击,选择“显示调用层级”。

呼叫层级菜单

类型层级

类型层级视图展示了 Java 对象之间的继承关系。你可以右键点击某个类型,选择“显示类型层级”。

褶皱区域

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

智能选择

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

  • 要扩展选择,请使用 ⌃⇧⌘→(Windows,Linux Shift+Alt+Right)。
  • 要缩小选择,可以使用⌃⇧⌘←(Windows,Linux Shift+Alt+Left)。

语义高亮

语法高亮是一项重要功能,能让你更高效地阅读代码。借助语义高亮,VS Code 可以基于 Java 语言服务的符号信息提供更准确的源代码着色。

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

语义高亮

你可以在 Java 语言支持扩展维基上了解更多关于 Java 语义高亮的细节。

使用 Spring Boot 导航代码

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

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

春季航行

想了解更多关于 Visual Studio Code 对 Spring Boot 的支持,请阅读 Visual Studio Code 中的 Spring Boot

代码编辑

使用 IntelliSense 编辑代码也非常简单,方便智能完成代码和签名细节。你可以使用代码片段以及各种代码动作,比如生成Getter/Setters和组织导入,进一步提升你的生产力。

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

有关重构和代码作的更多细节,请参见重构和源代码作

IntelliSense

Visual Studio Code for Java 的代码补全由 Red Hat 的 Language Support™ for Java 提供。该扩展由与Eclipse相同的Java开发工具(JDT)驱动,因此你可以期待同样的支持水平。

此外,还有一个名为IntelliCode的AI辅助IntelliSense。它通过把你最可能用到的项目放在完成列表顶部,帮你节省时间。IntelliCode 的推荐基于 GitHub 上成千上万个开源项目,每个项目都超过 100 颗星,因此它是基于高质量项目中最常见的使用方式进行训练的。结合代码的上下文,完成列表会针对这些实践进行定制。这是IntelliCode for Java 的实际应用。

IntelliCode 与流行的 Java 库和框架如 Java SE 和 Spring 兼容良好。无论你是在做单体Web应用还是现代微服务,它都会帮到你。

创建新文件

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

代码片段

Visual Studio Code 支持各种流行的 Java 代码片段,帮助你提高生产力,比如 class/interface、syserr、sysout、if/else、try/catch、static main 方法。利用 Java 语言服务器的信息,它还在选择时预览代码片段。

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

代码片段

完整的快捷方式列表如下:

代码片段快捷方式

快捷键 描述
ctor 公共制造商
多时 “在”
foreach, iter 对数组或可迭代算法进行迭代
福里 对数组进行迭代
如果 if命题
如果不然 If-else 语句
IFnull 如果语句检查空
如果不零 如果语句检查 是否为空
主,PSVM 公共静态主方法
创建新对象
private_method 私人方法
private_static_method 私有静态方法
PRF 私人领域
protected_method 受保护方法
public_method 公共方法
public_static_method 公共静态方法
切换 开关语句
西瑟尔,瑟尔 打印到标准错误
系统管理员,系统管理员 打印到标准输出
Systrace,苏特姆 打印当前方法改为标准化
try_catch 尝试/接球阻挡
try_resources try-with-resources陈述
虽然 虽然陈述

后缀片段快捷方式

快捷键 模板内容 描述
演员表 ((某种类型)体验) 将表达式铸造为新类型
否则 如果(!expr) 生成一个否定的 if 语句
对于 对于(T项:expr) 创建一个 for 语句
福里 对于(整数 i = 0;i < expr.length;i++) 创建一个 for 语句,对数组进行迭代
福尔 对于(int i = expr.length-1;i = >= 0;i--) 创建一个for语句,以反向顺序迭代数组
如果 如果(Expr) 生成一个 if 语句
nnull 如果 (expr != null) 创建一个if语句,并检查表达式是否未解析为空
无效 如果 (expr == null) 创建一个if语句,检查表达式是否解析为空
系统输出 System.out.println(expr) 将受影响的字符串发送到 System.out.println(..) 调用
掷出经验 抛出给定的异常
VAR T 名 = expr 创建一个新变量
虽然 而 (expr) {} 形成一个时间循环