详解Eclipse中的快速Java编码(代码模板)
简介
Eclipse 提供了通过定义和使用代码模板(Code Templates)来提高工作效率与代码可预测性的能力。本文介绍如何编辑现有的代码模板以及定义新的代码模板,并通过内置变量的示例,展示这些变量在编辑器中被解析后的实际内容。
背景与问题
在 Java 开发过程中,我们常面临以下问题:
- 缺乏一致性:当团队多人协作或个人遗忘特定编写规范时,代码风格容易出现差异,导致难以搜索和维护。
- 工作效率不高:编码工作涉及大量打字,手动键入或复制粘贴大段重复代码会消耗大量时间。
什么是代码模板
代码模板虽能提高效率,但不能替代真正的代码重用(如编写通用方法或函数)。在使用模板之前,提高一致性和效率的常用手动方法是复制粘贴并修改。而使用 Eclipse 中的模板功能可解决上述问题,只需编写一次模板,即可在整个应用程序中重复应用。
调用模板
在编辑器中输入时,开始键入模板名称并使用 Ctrl + Space 调用代码完成功能,名称匹配的模板会出现在列表中(如图 1)。若再次按 Ctrl + Space,Eclipse 会循环遍历模板类型。插入模板可使用箭头键选择后按 Enter,也可鼠标双击模板名称。模板插入后,可用 Tab 键在变量间切换并键入变量值。
图 1. 从列表中选择模板

编辑模板
通过选择 Window > Preferences 打开 Eclipse 偏好设置,转到 Java > Editor > Templates 查看现有模板。单击列表中的模板并单击 Edit 进行编辑,此时会出现 Edit Template 窗口(如图 2)。
图 2. 编辑模板

Edit Template 窗口中各字段含义如下:
- Name:模板的名称。
- Context:模板的上下文。Eclipse 将模板的选择限定于对该上下文有效的那些模板(例如,编辑 XML 文件时不会出现 Java 语句模板)。
- Automatically insert:若选中,Eclipse 在模板全部名称输入完毕且调用模板插入后(如按 Ctrl + Space)自动插入模板。
- Description:描述模板,出现在下拉列表中,有助于识别模板(模板名称不需唯一)。
- Pattern:作为模板插入的实际代码,包含需 Eclipse 解析的全部变量。
可编辑模板值,完成后单击 OK。编辑模板时若要插入内置变量,可单击 Insert Variable,更多变量信息可查阅 "Taking advantage of variables in templates"。
创建模板
单击 New 创建模板,根据“编辑模板”部分介绍编辑值,完成后单击 OK,新模板将出现在列表内,最后单击 OK 关闭偏好设置窗口。
利用模板内的变量
使用模板的挑战在于了解内置变量的解析内容。变量可自动插入如当前类型名称、光标位置等内容,使模板更动态,减少手动更改工作量。
清单 1. 面向日志声明的模板
${imp:import(java.util.logging.Logger)}
private static Logger logger = Logger.getLogger(${enclosing_type}.class.getName());清单 2. 在插入日志声明后的 Automobile 类
private static Logger logger = Logger.getLogger(Automobile.class.getName());如清单 1 和 2 所示,类名称会自动解析,且 Logger 的导入声明会自动添加在类顶端。
表 1. Eclipse 针对 Java 模板的内置变量
| 变量名 | 描述 | 示例 |
|---|---|---|
| cursor | 将编辑器的光标放在这个位置 | N/A |
| date | 插入当前日期 | Oct 20, 2009 |
| dollar | 插入货币符号 | $ |
| elemType | 尝试猜测具有给定 ID 的这个元素的类型 | MyType |
| enclosing_method | 插入模板被插入其中的那个方法的名称 | method() |
| enclosing_method_arguments | 为包围方法插入参数 | arg1, arg2 |
| enclosing_package | 插入当前类的包名 | com.example.ui |
| enclosing_project | 插入包含所编辑的这个类的项目的名称 | myProject |
| enclosing_type | 插入正在编辑的类型(类)的名称 | MyType |
| exception_variable_name | 插入一个异常变量名称,进行最佳猜测 | e, ioe |
| file | 文件的简称 | MyType.java |
| import | 如果尚未导入,那么针对给定类型插入一个导入声明 | import com.example.ui.MyOtherType |
| importStatic | 与 import 相同,只不过是静态导入 | import static com.example.ui.MyOtherType.* |
| line_selection | 将选中的行插入到这里,对用模板包装行有用 | 以选中行作为主体的 do、while 循环 |
| primary_type_name | 没有扩展名的文件简称 | MyType |
| time | 插入当前的时间 | 9:09:35 a.m. |
| todo | 注释中的 TODO 标记 | TODO |
| user | 当前用户的名字 | ngood |
| var | 解析为本地变量,如果不只一个,就提供一个列表 | myvar |
| word_selection | 插入当前选中的单词 | N/A |
| year | 将现在的年份插入到代码中 | 2009 |
也可创建自己的变量,在模板插入后输入值,键入的值会在变量出现的所有位置替换。如清单 3 模板:
清单 3. 创建您自己的变量
public void test${my_variable}() {
String expected = "value"; ${my_object}.set${my_variable}(expected);
assertEquals("${message}", expected, ${my_object}.get${my_variable});
}图 3. 自动插入值

插入模板后,只需键入第一个值,其余自动替换,完成后按 Tab 移到下一个变量。
导出模板
为与他人共享模板,可将其导出到文件(XML 格式,含模板信息,可导入到 Eclipse 其他实例)。选中模板并单击 Export,Eclipse 提示保存位置,完成导出后单击 OK 关闭 Preferences 窗口。
导入模板
可从包含导出模板的文件中导入模板。单击 Import,Eclipse 提示要导入的文件,导入后单击 OK,新模板即可导入到编辑器中。
结束语
Eclipse 内的代码模板是提高工作效率和应用程序一致性的有效方式。可构建自己的代码模板,在代码内定义变量以自动插入相关内容,还可通过导出和导入模板共享。例如,每次写小测试类时输入 main 方法很繁琐,可利用代码模板解决(如配置"psvm 代码模板”)。
编辑面板中关键五项如下:
- Name:名称,即以后可用的代码缩写。
- Context:模板上下文,指定模板生效位置(Java 至少包含 Java type members、Java statements、Java、Java doc 等)。
- 模板变量:Eclipse 预置了一些(如
${cursor}等),也可定义自己的变量。 - Pattern:代码模板对应的模式,按期望格式输入。
还可利用代码模板给类添加注释等。软件工程中工具的高效使用能节省成本,应了解并发挥工具最大潜能。本文只对 Java 代码模板作了粗浅介绍,其在编写 HTML 代码时优势更大(如自定义"ul_list_menu"模板生成菜单代码)。
其他有用参考
- http://shareal.blog.163.com/blog/static/27659056201193063914196/
- http://www.coderli.com/eclipse-javadoc-template
说明:本文基于较早期的 Eclipse 版本编写(文中示例日期显示为 2009 年),部分菜单路径或变量行为在新版本 IDE 中可能略有差异,但核心模板机制基本保持一致。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/xiang-jie-eclipse-zhong-de-kuai-su-java-bian-ma--dai-ma-mu-ban.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。