在这篇文章中,我想向您展示 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 原创翻译

转自:http://www.oschina.net/question/12_70799

【IDEA&&Eclipse】3、IntelliJ IDEA 的 20 个代码自动完成的特性的更多相关文章

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

    http://www.oschina.net/question/12_70799 在这篇文章中,我想向您展示 IntelliJ IDEA 中最棒的 20 个代码自动完成的特性,可让 Java 编码变得 ...

  2. 设置Eclipse的类文件和xml文件代码自动补全

    原文:https://blog.csdn.net/erlian1992/article/details/53706736 我们在平常编写代码的时候,不会记住大多数的类和文件的属性,方法等等,这就需要我 ...

  3. Idea_从Eclipse转Intellij IDEA

    场景:使用Intellij IDEA感觉还是不是很顺手,想放弃又舍不得它,如:强大的代码提示功能. 本人使用IntelliJ IDEA其实并不太久,用了这段时间以后,觉得的确很是好用.刚刚从Eclip ...

  4. Eclipse和intellij idea 快捷键对比

    Eclipse和intellij idea 快捷键对比

  5. Mac之OS系统下搭建JavaEE环境 <三> 之Eclipse 与 IntelliJ IDEA 的安装配置

    三.Eclipse 与 IntelliJ IDEA 的安装配置 1.Eclipse的安装配置 1 下载eclipse 到官网 https://www.eclipse.org/downloads/ecl ...

  6. Intellij idea 和android studio 代码给混淆

    Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...

  7. Eclipse 代码自动提示的设置

    1. eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)? 2. http://www.iteye.com/topic/1120919 [C++] ...

  8. eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?

    对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. eclipse代码里面的代码提示功能默认是关闭的,只有输入“. ...

  9. HTML5游戏实战(4): 20行代码实现FlappyBird

    这个系列很久没有更新了.几个月前有位读者调侃说,能不能一行代码做一个游戏呢.呵呵,接下来一段时间,我天天都在想这个问题,怎么能让GameBuilder+CanTK进一步简化游戏的开发呢.经过几个月的努 ...

随机推荐

  1. android启动画面隐藏状态栏全屏显示

    1.在根部局给一个id,然后直接设置就行了layout.setSystemUiVisibility(View.INVISIBLE); 状态栏就没有了. 2.如果你只是想改变状态栏颜色的也可以 //5. ...

  2. Awake()跟Start()差在哪?

    刚开始学Unity的时候,最难搞定的就是这两个functions的差异,依照官方文件所描述的: Awake(): Awake is called when the script instance is ...

  3. 背水一战 Windows 10 (92) - 文件系统: 读写“最近访问列表”和“未来访问列表”, 管理以及使用索引

    [源码下载] 背水一战 Windows 10 (92) - 文件系统: 读写“最近访问列表”和“未来访问列表”, 管理以及使用索引 作者:webabcd 介绍背水一战 Windows 10 之 文件系 ...

  4. 【spring源码分析】IOC容器初始化——查漏补缺(一)

    前言:在[spring源码分析]IOC容器初始化(十一)中提到了初始化bean的三个步骤: 激活Aware方法. 后置处理器应用(before/after). 激活自定义的init方法. 这里我们就来 ...

  5. Jira/Confluence的备份、恢复和迁移

    之前的文章已经分别详细介绍了Jira.Confluence的安装及二者账号对接的操作方法,下面简单说下二者的备份.恢复和迁移: 一.Jira.Confluence的备份.恢复1)Confluence的 ...

  6. 学生管理系统(springMVC)

    <Java Web编程>课程设计                                                                               ...

  7. @RequestParam加不加的区别

    感觉@撸码识途 https://www.cnblogs.com/tinyj/p/9786131.html 加上的情况: @RequestMapping("demo") public ...

  8. 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目

    一,vue-cli环境搭建 1,全局安装webpack npm install webpack -g 2,安装vue脚手架 npm install vue-cli -g 3,新建一个新的project ...

  9. Win10手记-为应用集成SQLite(二)

    接上篇内容,这里给大家分享我的辅助访问类,采用了异步方法,封装了常用的访问操作,一些操作还是纯CLI的. SQLiteDBManager using System; using System.Coll ...

  10. python ---解决高并发超卖问题

    使用redis 解决美多商城超卖的问题 import redis r = redis.Redis(host='localhost', port=6379) #定义过载 def limit_handle ...