`

IntelliJ IDEA 的 20 个代码自动完成的特性

    博客分类:
  • java
 
阅读更多

在这篇文章中,我想向您展示 IntelliJ IDEA 中最棒的 20 个代码自动完成的特性,可让 Java 编码变得更加高效。对任何集成开发环境来说,代码的自动完成都是最最重要的一项功能,它根据你输入的内容进行预判并帮你自动完成你想输入的代码,有时候甚至都不知道自己想要输入什么,例如一些类名、成员、方法或者是其他方面的内容。

IntelliJ IDEA 中的代码自动完成的功能之所以能让我如此印象深刻,原因是 IDEA 真的理解你的代码以及你当前所在的上下文。接下来我们将这些最重要的特性进行简单的说明,这些特性让 IDEA 显示出比其他 IDE 更棒的表现。

即刻完成 Instant completion

第一个也是最吸引我的就是“即刻完成”特性,不同于其他 IDE,IDEA 可在任意地方提供这个功能,而不只是当你要访问某个类的成员时。只需要输入单词的首字母,IntelliJ IDEA 就会立即给出最相关的、最适合此处代码编辑需要的选项共你选择。

想要了解“即刻完成”是多么的有效,你可以浏览这个 演示视频

类型感知的自动完成 Type-aware completion

另一个特性同样打破了常规的代码自动完成的方法,称为:智能自动完成。你可能已经知道,IDEA 中包含不止一种自动完成的功能,包括 基本自动完成 ⌘Space 和 智能自动完成 ⌘⇧Space.

当你呼出 智能自动完成 时,它会将建议列表中的不适用的条目过滤掉,只显示可用的类、变量、属性或者方法,这个提升了性能而且可以避免不必要的错误,如果你试用下这个功能,你肯定会时刻想到它。


静态属性和方法 Static fields and methods

就如同刚才我说的,IDEA 一直走在你的想法之前。如果你不记得一些静态成员的类名,你只需要开始输入静态成员的名称,然后调用两次“自动完成”,IDEA 会给你提供正确的可供选择的列表,甚至是通过静态 import 进来的方法,如果你调用 Intention action ⌥⏎ 的话.

再一次说明,如果你使用 智能自动完成, 它将只提供可正确使用的选项。

链式自动完成 Chain completion

接下来的一个可让你更多的提升编码效率的自动完成特性,名为 链式自动完成(Chain completion). 如果你需要输入这样的调用方法 getModule().getProject(),只需要使用两次 Smart completion 即可。这种情况下 IDEA 将扫描变量、属性和方法,以及在当前上下文中的可见性,并为你提供可用的选择。

你可能知道 Eclipse Juno 有一个名为 Code Recommenders 的插件,这是一个相当有意思的插件提供了这里说到的功能,但它的工作方式完全不同,只提供 Eclipse SDK API 类中的建议,而 IDEA 为你提供你代码中所有类的自动完成建议。

数据流分析 Data flow analysis

IntelliJ IDEA 被称为是最智能的 Java IDE 的原因是,IDEA 提供的各种功能都是基于对你代码分析的结果,数据流分析就是其中一项。IDEA 分析数据流以便猜测运行环境中的变量类型,并提供基于这个类型的自动完成以及自动增加类的强制类型转换。


常量自动完成 Constants completion

很多 API 使用 Java 的原始类型而不是枚举类型来定义常量,IDEA 能分析出项目中的这些常量,并在自动完成的建议列表中提供选择,快速输入。


父类自动完成 Super completion

你可能已经注意到了,要调用一个有很多参数的父类构造函数挺烦人,而 IDEA 能理解你想要的并提供建议列表供选择。


语句自动完成 Statements completion

IntelliJ IDEA 另外一个智能的特性就是 自动完成语句 Complete statement ⌘⇧⏎, 可以帮你完成正在输入的语句的剩余部分,自动增加漏掉的大括号小括号和必要的格式化处理。

你可能认为这是一个很小的特性,但你会很惊奇的发现当你习惯后,它节省你很多时间。

想试试这个特性可在代码中尝试输入 if 然后按 ⌘⇧⏎. 你也可以在从建议列表中选择的时候使用。

参数信息 Parameter info

我相信大多数的 IDE 在你调用某个方法或者构造函数时都提供了参数的建议,然后如何提供的也是非常重要。

IntelliJ IDEA 会显示每个重载方法或者构造函数的参数信息,并高亮其中最佳匹配的参数类型。这帮你根据输入和期望的内容来选择合适的方法。

你也可以通过 ⌘P 来显示参数信息。

快速定义 Quick definition

另外一个你可能不知道的特性就是 快速定义 Quick definition ⌘⇧I. 它会弹窗显示建议列表中的方法定义的内容,更多的时候,方法的定义比文档更有用,特别是你不确定要使用哪个方法时。


从自动完成中排除 Exclude from completion

我肯定每个人都至少会碰到一次这种情形,你从来不用的某个反复总是反复的出现在自动建议列表中。例如 com.sun 或者是 java.awt 包。

IntelliJ IDEA 可帮你排除掉这些选项,只需要在要排除的选项中调用 Intention ⌥⏎ 并确认,你也可以在Settings 中重新找回这些信息。


其他语言注入 Injected languages

接下来的这个就不管是代码自动完成那么简单,这个功能完全可以开一篇新的文章详细介绍,但这里只介绍它跟代码自动完成有关的部分。

其他语言注入 Language injection 是 IntelliJ IDEA 带来的高级代码助手,可对 Java 代码中字符串的表达式进行自动完成。这些表达式可以是 SQL, JPQL, XPath expression, HTML, CSS, JavaScript 片段等任何语言。

在 IntelliJ IDEA 提供这些表达式的自动完成功能前,你必须指定对应的语言,你可在字符串上调用Intention action ⌥⏎ 来设置,然后方可使用。

例如你在 IDEA 中定义了一个数据源,你将可使用基于表名的 SQL 表达式的自动完成,该 IDE 会分析项目中所有的文件并提供所支持语言的高级自动完成功能。

使用 Tab 键的自动完成 Completion with Tab

另外一个特性就是 Сompletion with Tab,也就是使用 Tab 键来实现自动完成,当你选择建议列表中的某个条目后点击 ⇥, 选中的内容将会覆盖光标标识符,而不是插入。这在编辑如文件名这样的标识符片段时是很有用的。

否定布尔值结果 Negating boolean results

并不是所有人都知道,当你从建议列表中使用 ! 来选择一个布尔值的选项时,IntelliJ IDEA 会自动添加所选项的的非值(例如本来是true的变成false)。

中间匹配 Middle matching

另外一个高效的方法就是 中间匹配 Middle matching. 意思是当你在刚开始要输入某个标识符时,IntelliJ IDEA 就会为你提供可供选择的建议列表,这个特性能显著提升编码效率,特别是当你只记住某个名称的一部分时。


大小写敏感设置 Case sensitivity settings

正如你可能已经知道的,代码完成常用的方法就是使用驼峰法则来根据您的输入去匹配相应的类名。虽然你需要输入至少一个大小字母来给 IDE 一些线索提示。而 IntelliJ IDEA 改进了这个法则,它不要求一定是大小字母,也可以是小写的,也就是说你没必要在每次使用这个功能时按 ⇧

默认 IntelliJ IDEA 对大小写是敏感的,你可以在 Settings 修改此项设置。

资源属性(properties)、文件名和资源的自动完成

IDEA 还可判断当前正在使用一些加载资源的方法,并给出可供选择的资源列表。


一些在非 Java 文件中的类名自动完成 Class name completion in non-Java files

IntelliJ IDEA 同样还提供一些非 Java 文件,如 XML 配置文件中的类名自动完成。


其他地方的自动完成 Completion in other places

另外一个你在别的 IDE 中很难见过的自动完成功能是,它不只是在代码编辑器中,还可用在调试器、表达式模拟、监视、文件选择器、搜索输入等等诸多地方使用。

表达式评估和监视工具中的自动完成这个功能是非常有价值的。

总结

我希望这篇文章能帮你更好的理解 IntelliJ IDEA 的代码自动完成特性,并从中受益。

你可以通过 Help → Productivity Guide 来了解更多的自动完成的类型以及 IDEA 已经帮你节省了多少时间(这个有点意思)

 

 

英文原文OSCHINA 原创翻译

分享到:
评论

相关推荐

    IntelliJ IDEA的20 个代码自动完成特性

    IntelliJ IDEA的20个代码自动完成特性

    从Eclipse转移到IntelliJ IDEA

    刚刚从 Eclipse转过来的很多人开始可能不适应,我就把使用过程中的一些经验和常用功能分享 下,当然在看这篇之前推荐你先看完IntelliJ IDEA 的 20 个代码自动完成的特性,这篇文章 对自动完成的特性介绍的非常好,...

    IDEA14 学习笔记

    13. IDEA代码提示和补充功能有一个特性:区分大小写 14 14. IDEA JAVA 代码的单行注释是把注释的斜杠放在行数的最开头 15 15. 启动IDEA 的时候,默认会打开上次使用的项目修改 15 16. IDEA设置可以增加 CTRL + E 弹...

    ideaIU-2022.3.3

    IntelliJ IDEA 是由 JetBrains 开发的一款流行的 Java 集成开发环境,它提供了一系列强大的工具和功能,帮助开发者更高效地编写、测试和调试 Java 代码。该版本可能包含了一些新的特性、修复和改进,以提升开发者的...

    在线语音识别,借助阿里云平台的语音交互

    代码分析工具:Android Studio内置了代码分析工具,可自动检测代码中的常见问题和错误,并提供修复建议。 调试工具:Android Studio提供了强大的调试工具,包括断点设置、变量查看、线程查看等功能。 版本控制:...

    基于JAVA+SQL实现办公自动化系统源代码+文档+外文翻译

    Java程序可以使用各种开发工具进行编写、编译和调试,比如IntelliJ IDEA等。 Java程序可以用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序等。Java的跨平台特性使得Java程序可以在任何...

    基于JAVAweb 实现办公自动化系统附源代码+文档说明

    Java程序可以使用各种开发工具进行编写、编译和调试,比如IntelliJ IDEA等。 Java程序可以用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序等。Java的跨平台特性使得Java程序可以在任何...

    springboot基础pdf

    如何搭建一个springboot项目,有实例介绍。Spring Boot框架依赖项的一些解释等等。 Spring Boot的特点: ...IntelliJ IDEA:这款流行的IDE也提供了对Spring Boot的支持,包括自动完成、代码提示和一键运行等功能。

    java笔记:01.IDEA常用配置总结.md

    这意味着开发人员只需编写一次代码,就可以在多个平台上运行,大大提高了开发效率和应用程序的可移植性。 Java的应用领域非常广泛。它被广泛用于开发Web应用程序、企业级应用程序、移动应用程序、嵌入式系统和消费...

    java学习:04.idea中快捷模板.md

    这意味着开发人员只需编写一次代码,就可以在多个平台上运行,大大提高了开发效率和应用程序的可移植性。 Java的应用领域非常广泛。它被广泛用于开发Web应用程序、企业级应用程序、移动应用程序、嵌入式系统和消费...

    codehelper.generator:codehelper.generator的源代码-Source code

    可以在Intellij Idea中快捷键配置中配置快捷键。 目前支持MySQL + Java,后续会支持更多的DB。 如果喜欢我们的插件,非常感谢您的分享。 GenDaoCode使用示例 GenDaoCode使用方法 主菜单工具-> Codehelper-> ...

    基于JavaWeb + Mysql + Layui实现的宿舍管理系统源码+数据库+演示截图+项目说明.zip

    - Java开发工具:IntelliJ IDEA 2021.2 - Web服务器:Tomcat10.0 - 数据库系统:Mysql8.0 - 数据库管理工具:Navicat > 所用技术: - 后端方面:JavaSe核心语法、MVC(controlle层、service、dao层)模型开发、...

    Java开源的下一代社区平台Symphony.zip

    简介 Symphony([ˈsɪmfəni],n.交响乐)是一个现代化的社区平台,因为它: ... IntelliJ IDEA:全宇宙暂时排名第二的 IDE 下一代的社区系统,为未来而构建 标签:java社区 symphony

    Spring API

    为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. ClassPath...

    Spring中文帮助文档

    为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. ClassPath...

    spring chm文档

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

Global site tag (gtag.js) - Google Analytics