11 跳转到类层次结构上方
有个常见的模式是您需要通过类层次结构跳转到当前方法(或整个类)的上方。在大多数IDE中,您可以在方法定义旁边的装订线上看到一个特殊的图标,通过点击该图标,可以导航到超类(或接口)中相应的方法定义。除此之外,IntelliJ IDEA还有一个专门的操作称为"Super Method",通过Ctrl + U(OS X上为Cmd + U)可用。这个操作可以让您一次跳到上方,甚至无需触碰鼠标。
12 跳转到类层次结构下方
如果您可以通过类层次结构向上跳转,为什么不能向下导航呢?很少有IDE提供这样的选项,而IntelliJ IDEA就是其中之一。除了将您带到超类的图标外,IntelliJ IDEA还提供了导航到派生类中相应方法定义的图标,因此您可以进行上下跳转。
图片
那些希望更快地向下导航类层次结构的人,可以使用与Ctrl + Alt + B(OS X上为Cmd + Alt + B)映射的"Implementations"操作。该操作允许您从派生类的整个列表中选择要前往的一个实现:
图片
13 方法层次结构
如果您想查看实现或重写当前方法的所有类的完整层次结构怎么办?在IntelliJ IDEA中,您可以通过调用"Method Hierarchy"操作来实现,通过Ctrl + Shift + H(OS X上为Cmd + Shift + H)可用。这个操作可以帮助您找出您可能想要导航的类。
图片
14 图形弹出
前文学习了如何在方法定义的层次结构上导航。有时,我们还需要在当前类(或插入符号所在的类)的层次结构上导航,而不管任何方法。为了做到这一点,在大多数IDE中,您可以使用显示给定类(或接口)层次结构的操作。在IntelliJ IDEA中,这个操作被称为"Type Hierarchy",并映射为Ctrl + H。
图片
正如您所见,这个操作的结果是一棵树,有些人可能觉得这种格式难以理解,这就是为什么IntelliJ IDEA还有另一个操作,称为"Diagram popup",通过Ctrl + Alt + U(OS X上为Cmd + Alt + U)进行映射。与显示无聊的树不同,此操作在图表上可视化给定类的层次结构。
图片
您可以在图表上导航到任何类或接口。
15 方法调用层次结构
谈到在层次结构、类和方法定义上导航时,我们几乎涵盖了所有内容,除了一件特定的事情:在方法调用的层次结构上导航。每个方法调用其他方法,而这些方法又调用其他方法,依此类推。这就是为什么有时候您可能想要导航到从当前方法调用的方法之一,或者导航到调用当前方法的方法之一。在IntelliJ IDEA中,您可以通过调用Ctrl + Alt + H键映射的"Call Hierarchy"操作,快速获取包含方法调用层次结构的弹出窗口:
图片
16 展示用法
另一个经常出现的情形是导航到光标所在位置的符号(常量、字段、变量、方法、类或接口)所使用的地方。为了实现这一点,在任何集成开发环境中,您可以使用查找用法操作。这种操作的一个缺点通常是它的重量级:它启动一个长时间运行的搜索过程并打开一个带有结果的工具窗口。这就是为什么IntelliJ IDEA还提供了一个轻量级版本的此操作,称为“显示用法”,可以通过Alt + Ctrl + F7(OS X上的Cmd + Alt + F7)进行访问:
图片
此操作在弹出窗口中显示结果,并默认使用项目级别范围。当您第二次调用此操作时,它会将范围更改为项目和库级别。
17 最近编辑的文件
本文的第一个模式是关于最近访问文件的导航。如果我们想将此列表缩小到最近编辑的文件呢?对于这个问题,使用IntelliJ IDEA的“最近编辑的文件”操作非常简单,快捷键为Ctrl + Shift + E(OS X上的Cmd + Shift + E):
图片
18 视图和控制器之间的导航
您认为您的集成开发环境只应该识别项目文件中的一般关系(例如类层次结构、测试覆盖率、用法等)吗?那么更具体的情况呢?为了基于特定关系进行导航,IntelliJ IDEA提供了相关符号操作,快捷键为Ctrl + Alt + Home(OS X上的Cmd + Alt + Home)。通过此操作,例如,您可以轻松在Spring MVC、Grails甚至JavaFX应用程序中在视图和控制器之间导航:
图片
19 导航到视图控制器
由于IntelliJ IDEA还能够识别项目中的特定关系,它还带来了哪些其他特定导航模式?如果您是Web应用程序开发人员,您可以调用“转到符号”操作,通过输入URL来导航到视图控制器:
图片
20 与数据库相关的导航模式
IntelliJ IDEA中的数据库工具也有其特定的导航模式。您可以通过使用“转到符号”操作并输入表的名称,快速跳转到数据库工具窗口中的表:
图片
如果您在表或列上调用“查找用法”,IntelliJ IDEA将显示引用它的所有其他表:
图片
并且,IntelliJ IDEA还可以在给定表中导航到主键的用法。例如,您可以要求IDE显示引用当前行的其他表中的行:
图片
总结
本文旨在介绍IntelliJ IDEA如何帮助您在项目中进行导航,以提高代码编写效率和保持专注。导航的重要性在于快速切换不同代码片段之间,而快速切换意味着更高的工作效率。希望本文对您的编码有所帮助。