编程 本文介绍如何利用Eclipse插件Implementors在Eclipse中的使用。
Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。
问题提出:
如果你想看看某个类或者方法的实现,一般是Ctrl + 鼠标左键,单击即可以打开这个类或者方法的具体实现代码。但是如果碰到接口时,只是到达接口而已,不能到达具体的实现类里。
解决方法:利用Eclipse的Implementors插件。
当追踪方法代码时,Eclipse默认是转到方法的接口类,而接口中是只有方法名称没有具体的实现代码,此插件提供了追踪到具体实现类的实现代码的功能。
另外还有Call Hierarchy插件: 显示一个方法的调用层次,可以从中看到它被哪些方法调用了,以及它调用了哪些方法,是代码追踪比较实用的工具。Eclipse 3.1中已经自带有这个功能了。这个插件就不用另加介绍了。
安装
JDK:1.5.0 从上去下载安装
Eclipse:3.1.1 从 上去下载解压
Implementors 从
技巧
Eclipse使用技巧之插件管理
提示:新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去,一大堆,累死你。
- 前提是你已经安装好了Eclipse工具了,比如安装在E:\OpenSource\Eclipse\目录下,以下这个目录以%ECLIPSE_HOME%来进行表示;
- 此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的;
- 在%ECLIPSE_HOME%下建立一个PlugInsNew的目录;
比如:E:\OpenSource\Eclipse\PlugInsNew\ - 你下载了个新的插件,比如叫做:XYZ
那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录,目录里面是eclipse目录,eclipse目录包含有features与plugins两个子目录;结构如下图所示: - 把下载的新插件的文件放在以下相应目录中
%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins - 建立相关的.link的文件
然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件
内容如是:path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行这样的路径指示而已。
这样,如果你下载了多个插件就可以如法炮制建立多个Link文件,想加载哪个插件就把哪个插件的Link文件放到 %ECLIPSE_HOME%\links的目录中即可,使用与管理都很方便,建议千万不要放在默认的安装目录中;
如果你的%ECLIPSE_HOME%与此不同,请修改XYZ.link文件里的路径 - 删除,关闭Eclipse
删除%ECLIPSE_HOME%\links\XYZ.link文件即可
删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件 - 重新启动Eclipse即可
Implementors插件安装方法采用上一节的《Eclipse使用技巧之插件管理》
重新启动Eclipse后,在代码编辑区域,右键,可以看到增加了两个右键菜单Open Interface和Open Implementation,如下图所示:

我们简单地创建一个示例工程,里面包含有一个接口类与两个实现该接口的实现类进行演示说明使用的方法。
接口类:IHelloWorld.java public interface IHelloWorld { String sayHelloWorld(); }在接口类IHelloWorld.java的方法sayHelloWorld()上面右键,在弹出的菜单中选择Open Implementation,如下图所示:
实现类一:HelloWorld1.java public class HelloWorld1 implements IHelloWorld { public HelloWorld1() { super(); } public String sayHelloWorld() { return "Hello World HelloWorld1"; } } 实现类二:HelloWorld2.java public class HelloWorld2 implements IHelloWorld { public HelloWorld2() { super(); } public String sayHelloWorld() { return "Hello World HelloWorld2"; } }

单击菜单Open Implementation,于是会弹出该接口方法的相关实现类出来供你选择,如果该接口方法的实现类只有一个的话,就会直接跳转到实现类的代码上去了,不会出现提示选择框的。

我们先选择实现类HelloWorld1,于是光标就会定位到实现类HelloWorld1.java的sayHelloWorld()方法上,并会加亮显示,如下图:

再回到在接口类IHelloWorld.java的方法sayHelloWorld()上面右键,在弹出的菜单中选择Open Implementation,如下图所示:

这次我们选择实现类HelloWorld2,于是光标就会定位到实现类HelloWorld2.java的sayHelloWorld()方法上,并会加亮显示,如下图:

在接口中可以找到具体的实现,那在实现类里如何反查接口的定义呢?
操作如下:在接口的实现类HelloWorld2.java的方法sayHelloWorld()上面右键,在弹出的菜单中选择Open Interface,如下图所示:

于是光标就会定位到接口类IHelloWorld.java的sayHelloWorld()方法上,并加亮显示,如下图:

当然,如果你的方法没有相应的接口就不会去进行跳转了。
总结
此插件的功能虽小,但是方便了许多,估计在未来的Eclipse版本中会把这个功能集成进去了,就象Call Hierarchy插件一样。