# 41. 最特殊的快捷键 Alt + Enter 介绍（新用户必看）

## 说明

* 这是一个非常特殊的快捷键，有必要拿出来单独讲。
* **强烈注意**：此快捷键跟光标所在位置有着很严重关联关系，光标放的位置不同，使用此快捷键出来的菜单选项完全不一样。
* 可以从几个思路：Java 类、JSP、HTML、JavaScript、CSS、SQL 等文件类型
* 下面演示的各个功能是基于：IntelliJ IDEA 2016.1.1，如果你使用早期版本，可能不一定有对应的功能。

## 智能辅助

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieKXrChdy6Zv6yo%2Fhotkey-alt-enter-introduce-1.gif?generation=1587691349742321\&alt=media)

> * 在 **接口类** 中，如果光标当前所在的方法，已经在 **接口实现类** 中生成了，则此快捷键的效果是跳转。
> * 在 **接口类** 中添加一个方法后，让该 **接口实现类** 也跟着生成

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieMx73GBm_eTr2_%2Fhotkey-alt-enter-introduce-2.gif?generation=1587691350301969\&alt=media)

> * 在 **接口实现类** 中添加一个方法后，让该 **接口类** 也跟着生成

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieOrGQ167-Kw9SC%2Fhotkey-alt-enter-introduce-3.gif?generation=1587691348709923\&alt=media)

> * 对当前光标所在类，生成单元测试类

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieQfCC5ocLdR5D9%2Fhotkey-alt-enter-introduce-4.gif?generation=1587691348595540\&alt=media)

> * 对当前光标所在类，创建子类，常用在对接口生成接口实现类

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieSuyRz3cPW5OKi%2Fhotkey-alt-enter-introduce-5.gif?generation=1587691349655792\&alt=media)

> * 移除未使用的变量、对象等元素

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieUPZ5XwwyoaL4d%2Fhotkey-alt-enter-introduce-6.gif?generation=1587691351433621\&alt=media)

> * 对属性创建 set、get 方法

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieWarEFZUUKI-wA%2Fhotkey-alt-enter-introduce-7.gif?generation=1587691350785895\&alt=media)

> * 添加 doc，只能把光标放在方法名或是变量名等这类元素上才会有

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlieY9EjZzwHVrQvY%2Fhotkey-alt-enter-introduce-8.gif?generation=1587691349859164\&alt=media)

> * 把自己造的单词加入词库中，让拼写单词检查错误的波浪线效果消失。

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlie_05OfRr6Fq3SA%2Fhotkey-alt-enter-introduce-9.jpg?generation=1587691348217345\&alt=media)

> * 自己造的词库在上图所示位置。

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dliebydcMcAcJqFt4%2Fhotkey-alt-enter-introduce-10.gif?generation=1587691349599648\&alt=media)

> * 快速移除当前类所继承的接口，并且同时清空已经写好的该接口所有的 Override 方法。
> * 光标只能方式 **接口实现类** 上的 **接口对象单词** 上才可以实现。

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlied6wdHRYIlgthr%2Fhotkey-alt-enter-introduce-11.gif?generation=1587691349242894\&alt=media)

> * 修改光标当前元素的作用域

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlief6RCd2zz9M_0N%2Fhotkey-alt-enter-introduce-12.gif?generation=1587691350687754\&alt=media)

> * 给调用的方法生成返回值
> * 根据返回值自动强转

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dliehJT_ffVYnMUX1%2Fhotkey-alt-enter-introduce-13.gif?generation=1587691351454040\&alt=media)

> * 对光标所在的对象进行包导入

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dliejd9bzGYDLjBWv%2Fhotkey-alt-enter-introduce-14.gif?generation=1587691350798239\&alt=media)

> * 切换成静态导入

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlielJh2Ef4MKXEjr%2Fhotkey-alt-enter-introduce-15.gif?generation=1587691349255800\&alt=media)

> * 根据 Language Level 级别不同，JDK 特性不同，给不同意见。Language Level 的含义在其他章节有讲过。

![智能辅助](https://375000346-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M5dleMkP-Zf7JMwlh7e%2F-M5dleoMUK8SaS2U4MaS%2F-M5dlien1ldjFSriHX7I%2Fhotkey-alt-enter-introduce-16.gif?generation=1587691350415360\&alt=media)

> * 给 Hibernate 的 Entity 对象分配数据源，从而产生一系列智能功能
