代码片段是Template上的最小单位,因此它也具有最大的灵活性,支持多参数配置、TAB切换、代码块包装等多种特性(IDEA同样适用)。
创建一个单例类
写一个将InputStream转化为String的方法
生成main方法并打印数字
用try catch来包装代码块
上面的这些有的是IDE自带的,有的是自定义的。具体位置我们可以进入IDE,Preserences,Editor,Live Templates,我们可以在右边栏看到一些列IDE预设的template,如下图
这里我们展开Android,可以看到下图
这里面所有的我们都可以使用,括号后面的内容是为了描述该模板的,你也可以取消前面的勾选来取消该模板。
其实系统预设的有很多都是很实用的,有兴趣的可以去试一试,不多说。这里主要看一下如何自定义模板,把一些常用的代码片段DIY到自己的模板库中,当下次再需要同样代码的时候只需要一个标识符就能迅速自动生成。
我们点击右上角的加号,我们可以看到两个选项一个是Live Template,这个表示一个模板,另一个是Template Group,这个表示一个模板所属的分组,就像上面看到的Android,它就属于一个分组。
接下来我们先创建一个自己的Template Group,名称随便取,不要与已有的分组重名就行,这里就取为Custom。然后我们选中新建的这个Custom分组再创建Live Template,会看到如下界面
我对这个界面做了数字标志,大致说下每个区域代表的含义
- 区域1:表示模板的缩写,也是我们最终使用时在编辑区输入的指令
- 区域2:表示模板的提示,当输入对应缩写时,就会弹出这个提示
- 区域3:这里就是最关键的模板区了,模板区包含两部分,一个是模板内容,它可以是任意字符串,另一个是模板变量,它有自己特殊的含义并且格式固定,首尾都是”$”符。模板变量又包含预设变量和自定义变量,比如”$END$”就是一个预设变量,它指定了模板导入结束后鼠标光标最终要停留的位置,而自定义变量则表示模板中一些动态性的部分,比如类名,它在不同的类中引入的结果是不同的。在多个自定义变量的情况下引入模板时,默认按TAB键切换至下个自定义变量位置。
- 区域4:自定义变量的配置入口,可以给我们的自定义变量添加一些约束条件
- 区域5:指定该模板的作用域,例如指定用于Java还是groovy等等
- 区域6:提供一些引入模板的可选操作
这里我们来写一个生成单例的模板,我们按照下图定义好缩写,描述与模板内容
模板内容的代码如下
1 | private static final byte[] sInstanceLock = new byte[0]; |
然后我们选择区域4来编辑我们的自定义变量,我们进去后可以看到如下弹窗
- Name为自定义的变量名称
- Expression表示系统提供的一些方法
- Default value为改变量的默认值
- Skip if define勾选后,如果该变量被赋值则跳过,相当于引入过程中一次手动的TAB
接着我们在Expression中选择className(),并勾选Skip if define,并点击确定
最后我们点击区域5来选择模板的作用域,我们选择Java—Declaration
然后保存,我们的单例模板便生成成功了。测试下,在IDE中新建个Java类,在类的内部输入single便出现最上面的那个UserManager的效果。
当然除此之外还有使用”$SELECTION$”来包装代码块的模板,这个使用场景相对较少这里就不举例了,主要使用的就是这种直接的模板模式。感觉一些常用的,特别是工具类中静态方法相关的,我们都可以抽取成模板,提高开发效率。