Europa 及其快捷键的简要介绍
在 Eclipse V3.2 发行版以前,不需要对各个插件的发行版进行组织。实际上,对 Eclipse 的抱怨之一是需要下载 IDE,然后花很长时间下载和安装需要的插件。这种情况随着多个项目的第一个同步发行版 —— Callisto —— 而改变。Eclipse Europa 是项目的第二个同步发行版,该版本把 Eclipse 提升到 V3.3 并且是按照开发类型组织到 Europa 发现站点中的经过改进的标准项目集。
要进行动态 Java Web 开发,如 JavaServer Faces (JSF) 或 JavaServer Pages (JSP),您只需要下载最新版本的 Eclipse 并安装 Web 开发功能。要进行 C 和 C++ 开发,可以使用一组有关的特性以及其他功能。
安装完 Eclipse Europa 之后,您就可以开始利用这个强大的 IDE,它提供了真正丰富的功能和本教程将介绍的众多生产力特性。
![]() ![]() |
![]()
|
键盘快捷键可以帮您节省很多时间,尤其是使用双手在键盘上执行命令或功能时。但是要记住所有快捷键并不容易。一方面,按 Ctrl+Shift+O 组合键自动组织 Java 类文件的导入非常快捷。而另一方面,如果需要搜索帮助或查找快捷键对照表来查找要使用哪个快捷键,那么使用快捷键也不会起到快捷的作用。
在 Eclipse 中,您只需记住适用于平台的一个快捷键:Ctrl+Shift+L 组合键(对于 Windows 或 Linux 计算机)或者 Command+Shift+L 组合键(对于 Mac)。该快捷键将为您提供 IDE 中的其他快捷键的 “heads-up 显示”。当显示快捷键后,您可以用箭头键滚动查找并在命令被突出显示时按 Enter 键来执行。快捷键显示在命令旁边,如图 1 所示,这样您下次就能记住它。
表 1 将提供一些在 Eclipse Europa 中非常有用的键盘快捷键。
快捷键 | 功能 |
---|---|
Ctrl+R | 定位资源,例如文件。 |
Ctrl+T | 定位类型,例如类,包括在源代码内部和外部的那些类。 |
Ctrl+O | 列出正在处理的 Java 类中的方法和属性。 |
Ctrl+1 | 当错误被突出显示时,提供纠正错误的建议。 |
Ctrl+Space | 列出正在键入的模板、方法或字段的建议。 |
![]() ![]() |
![]()
|
![]() |
|
能够通过单击热键查找菜单、命令和首选项是 Eclipse Europa 中最令人兴奋的新功能之一。例如,如果忘记整理代码的菜单项或者配置设置的首选项页面的位置该怎么办?您只需按 Ctrl+3 组合键(或者对于 Mac 是 Command+3 组合键),然后将显示一个列表。开始键入您要查找的内容,例如 clean
,然后将显示匹配的命令、菜单和首选项结果。
Search 菜单:探险工具
有一次,当我跟同事谈起必须要记住大型项目包结构的组织方式才能快速找到所需的 Java 类时,他对我说,“当我需要查找时,我通常转而使用搜索工具”。我一直坚持了这个原则,因此只要我需要到代码中查找内容时,我称它为 探险(spelunking)。它让我感觉像在探险并在找到丢失的代码时欢欣鼓舞。
Eclipse 有很多十分强大的搜索工具,这样它可以改进组织代码的方法。您不用考虑使用命名约定或包(目录)来简化工件的查找;相反,可以使用包按照域或目的对工件进行分组。
Search 菜单如此强大的原因是它允许您执行比搜索文件文本更多的操作。您可以使用 Java 搜索查找方法声明、引用您的类或方法的 JUnit 测试,甚至还可以查找引用了突出显示的方法的其他代码。
查看图 3 中的 Search 菜单。下面讨论的强大功能包括 References、Declarations、Implementors、Read Access 和 Write Access。
每个搜索功能都提供允许您快速确定搜索范围的子菜单。表 2 中列出了搜索范围和其中的内容。
搜索范围 | 包含内容 |
---|---|
Workspace | 包括当前工作区中的所有文件。 |
Project | 仅在当前项目内搜索查找是否出现。 |
Hierarchy | 仅在当前类或接口的层次结构中搜索,这仅限于父类、实现类或子类。 |
Working Set | 仅在所选工作集中搜索(在 “工作集” 小节中了解工作集的更多信息)。 |
分别查看清单 1 和清单 2 中的简单接口 Cow
和实现类 Hereford
。两张清单将帮助您了解对于不同类型的搜索可以获得哪类结果。
public interface Cow { void moo(); } |
Hereford
类将实现 Cow
接口并且有一些用于演示目的的方法。
public class Hereford implements Cow { private String name; public void moo() { String message = "My name is " + name + ". Moo!"; System.out.println(message); } public String getName() { return name; } public void setName(final String name) { this.name = name; } } |
![]() ![]() |
![]()
|
对于这两张清单,如果在清单 2 中突出显示 name
并搜索 references,则结果类似图 4,其中方法名包含了对 name
变量的引用。
![]() ![]() |
![]()
|
如果突出显示 setName()
方法并搜索项目内的 declarations,则搜索结果将包括拥有同名方法的所有类。在层次结构中搜索 moo()
的声明将显示图 5 中所示的结果,限定搜索范围为当前类和它实现的接口(Cow
)。
![]() ![]() |
![]()
|
通过搜索 implementors,您可以找到实现接口的类。此类搜索仅在突出显示接口名称时起作用。如果突出显示 Cow
并搜索接口,则 Hereford
类将是列在 Search 窗口中的惟一结果。
![]() ![]() |
![]()
|
对 read access 执行搜索将查找读入所选变量的所有位置。在调试大型类时我需要知道哪些其他代码正在使用变量的值,我经常会使用到它。搜索清单 2 中的 name
变量的读访问将给出图 6 所示的结果。
![]() ![]() |
![]()
|
和 read-access 一样,write access 将搜索是否出现某个变量或字段,除非它把搜索限制为查找是否出现了某个正在进行设置的变量。在清单 2 中搜索 name
将生成图 7 所示的结果。
![]() ![]() |
![]()
|
![]() |
|
可以通过十分强大的方式过滤和修改结果中的 Search 选项卡,从而只显示需要查看的结果。如果单击 Search 选项卡上的箭头,则将显示允许您按多个条件快速过滤结果的菜单。
![]() ![]() |
![]()
|
Search 菜单项将显示包含许多选项卡的搜索窗口。Java Search 选项卡是特定于语言的搜索示例(如果安装 PHP Development Tools 插件,则可以使用 PHP 搜索)。它将允许您通过在特定于语言的环境中搜索字符串来执行强大的搜索。在 Java 编程语言中,这意味着您可以搜索类型、方法、字段等。然后,您可以把此搜索限定到声明、引用以及更多内容。图 9 显示了 Java Search 选项卡。
时光倒流
我喜欢食物,这意味着我迫不及待地要去吃午餐。外出吃饭是我一天中的美好时光之一,除非我在吃完午餐后返回,坐下,然后发现单元测试并未成功运行。我会对自己说 “我记得在离开前已经开始测试了,发生了什么事”?如果使用的是其他 IDE,我将开始使用 Undo
命令,希望它能把我带回到代码运行的位置(在我外出午餐之前),但同时不会恢复一些重要的工作。
幸运的是,在 Eclipse 中,有一种更好的方法可以比较代码并把代码恢复到先前状态。要使用此功能,请突出显示需要比较的文件并选择 Compare With > Local History。将显示 History 选项卡(如图 10 所示),同时显示保存该文件的日期和时间。双击这些时间之一可以访问 compare 编辑器。使用 compare 编辑器,您可以手动恢复某项更改。
要把整个文件替换为本地历史记录中的版本,请单击 Replace With > Local History,然后选择用来替换的版本。compare 编辑器使您能够预览更改,因此可以避免盲目替换。
创建新透视图
使用透视图可以设置 IDE 的窗口和视图,然后保存该设置。
通过使用不同的透视图来执行不同的任务,您可以快速查看帮助您完成任务的窗口、编辑器或导航树类型。透视图包括用于编写 Java 代码的 Java 透视图、把 IDE 更改为显示断点和堆栈跟踪的 Debug 透视图以及允许您快速比较代码和系统库的 Team Synchronizing 透视图。要打开以上任何一个透视图,只需单击 Window > Open Perspective。
![]() ![]() |
![]()
|
如果您过去习惯于使用其他 IDE,而现在开始使用 Eclipse Europa,则可能习惯将某些视图显示在特定位置上。您可能希望 Package Explorer 显示在右侧而不是左侧,而且您可能根本不希望看到 Outline 视图或 Task 视图。您可以修改 Java 透视图,但是如果把透视图重置为默认设置,那么您就遇到麻烦了。
![]() |
|
您可以不修改 Eclipse Europa 附带的默认透视图,而是创建一个新透视图 —— 由您专用 —— 并把该透视图设置为首选项。
要设置自己的透视图,首先要找到一个透视图作为起点,如 Java 透视图。通过关闭视图、打开其他视图并在选项卡之中切换,按照自己的方法进行设置。现在通过选择 Window > Save Perspective As 来创建您自己的透视图,然后键入名称。现在如果打开其他视图,但是需要把自定义视图返回到最初保存时的状态,则可以选择 Window > Reset Perspective。
实用程序
从 Callisto 到 Eclipse Europa,Eclipse 中的代码清理实用程序得到了很大改进。通过使用 Europa 中的自动化代码清理工具,可以自动完成很多代码任务,使源代码不断完善。您不但可以自定义代码清理配置,而且还可以把它们保存为可以与其他人共享的格式。在团队环境中,导入代码清理设置是非常重要的功能,因为它使整个团队都以相同的方式设定代码格式并进行清理。
要清理代码,请选择 Source > Clean Up。如果已设置配置文件,则可以从列表中选择。
如果没有为清理代码设置配置文件,则可以轻松地创建一个新配置文件。要创建自定义配置文件,请在 Clean Up 向导中单击 Configure,如下所示:
单击 Configure 后,将显示如图 12 中所示的窗口。
选中 Enable project specific settings 复选框,然后单击 New。给配置文件命名(例如,MyCleanupProfile
),然后单击 Next。Eclipse Europa 将显示配置文件编辑器。使用此编辑器,可以修改设置并在右侧的 Preview 窗格中查看更改,如图 13 所示。完成设置后,单击 OK 以保存新配置文件。
返回到 Clean Up 窗口时,可以单击 Finish 把清理配置文件应用到代码中,也可以单击 Next 预览更改。预览更改将使您可以清除不需要添加到 Changes to be performed 列表中的所有内容。
![]() ![]() |
![]()
|
要确保始终以一致的方式清理代码,您可以把 Eclipse Europa 配置为在保存工作时清理代码。要在保存时执行格式化和清理操作,请执行以下操作:
- 打开项目的属性。
- 展开 Java Editor 并单击 Save Actions。
图 14. 更改 Java 编辑器的保存操作 - 选中 Enable project specific settings 复选框。
- 选中 Perform the selected actions on save 和 Additional actions 复选框。
- 单击 Configure 并选择清理源代码的选项。
让 IDE 工作
通过在 Source 菜单中使用命令,为经常使用的代码创建模板并且修改 build.xml 文件,可以使 Eclipse Europa IDE 开始工作。
Source 菜单可以提供许多对生成代码有用的命令,包括 public accessor、构造函数和覆盖方法。
-
Override/Implement 方法
- 此命令将帮助您生成用于覆盖基类方法的方法。
-
生成 setter/getter
- 此命令将在当前编辑器中把私有字段的 public accessor 插入类中。
-
生成委托方法
- 此命令将插入的方法允许您创建可以轻松公开内部功能的方法。
-
这些生成的
hashCode
和equals()
方法使您可以选择在比较等同性时需要使用类中的哪些字段。这种方法非常适合业务对象,因为其等同性可能基于一些对象属性。例如,如果两个对象的id
字段相同,则可视为一个对象等于另一个对象。
hashCode()
和 equals()
-
使用字段的构造函数
- 有时需要初始化对象的构造函数中的某些字段。如果尚未创建任何构造函数,使用 IDE 生成它们。
-
来自超类的构造函数
-
此命令将插入在超类中执行镜像的构造函数。像大多数其他
generate
命令一样,这条命令允许您选择在当前类中需要包括超类的哪些构造函数。
![]() ![]() |
![]()
|
代码模板允许您把代码部分插入到编辑器中,这样可以节省键入时间并使您可以从可复制的代码部分中获益。要插入代码片段,只需首先键入一个模板名称,然后按 Ctrl+Space 组合键显示模板的选择列表。
您可以使用模板的 Preferences 窗口构建自己的模板,访问方法为展开 Java,展开 Editor,然后单击 Templates,如图 15 所示。要添加新模板,请单击 New,然后键入模板的名称和描述。接下来,在 Pattern 字段中键入需要用作模板的代码。
变量允许您把占位符插入到自动执行某些工作的代码模式中。考虑下面所示的 logger 的静态声明示例。
private static Log logger = LogManager().getLog(Hereford.class); |
在此清单中,当使用 ${type}
变量时将自动插入 Hereford.class
。
![]() ![]() |
![]()
|
在 Eclipse Europa 中设置自己的构建器将使您在构建项目时能够执行特定的过程。在构建器的首选项页面中,可以指定构建器运行的顺序,例如,如果设置生成源代码的构建器,则可以确保在运行项目的编译程序之前运行该构建器。
![]() |
|
指定要构建的 Ant 文件是把流程集成到构建中的最简单方法之一。下面的部分将展示如何添加一个可以自动把编译好的源代码打包成 Java Archive (JAR) 的构建器。
build.xml 文件中有一个目标和任务。下面是开始处理 build.xml 文件的简单方法:
- 创建新 XML 文件。在空文件中,按 Ctrl+Space 组合键以显示常见任务列表,然后从列表中选择 Buildfile template。
清单 4 显示了删除注释和额外目标并添加
jar
任务之后的 build.xml 文件。此任务将把编译好的类文件打包到 dist 目录中的 JAR 中。
<?xml version="1.0" encoding="UTF-8"?> <project name="savingTime" default="dist"> <description> A project showing all the features in Europa that save time. </description> <target name="dist"> <delete file="dist/savingTime.jar" failοnerrοr="false"/> <jar destfile="dist/savingTime.jar"> <fileset dir="bin"> <include name="**/*.class" /> </fileset> </jar> </target> </project> |
- 构建文件完成后,选择 Properties > Builders。
对于标准的 Java 项目,Java 构建器是列表中默认的惟一选项。要添加 Ant 构建器,请从列表中选择 Ant Builder,单击 New,然后单击 OK。
- 在下面所示的 Edit launch configuration properties 窗口中,键入新构建器的名称,例如
My Jar Builder
。
- 单击 Browse Workspace 以查找新创建的 build.xml 文件。
- 在 Refresh 选项卡中,选择 Refresh resources upon completion。
选择自动刷新资源意味着当构建完成时,IDE 将刷新工作区,以便使构建生成的所有新文件或更新文件生效。
- 在 Targets 选项卡中,单击 Auto Build 框旁边的 Set Targets 并确保未选择任何选项。
如果要自动刷新资源和自动构建,则会出现构建循环,因为只要刷新工作区,构建就会启动。
- 设置构建器后,保存它并单击 OK。
工作集
工作集 是工作区中的项目集,不但允许您把工作组织到相似的分组中,而且允许您限制搜索范围和构建范围。此外,您可以设置项目浏览器以显示按工作集组织的项目。使用工作集组织工作区的一个例子是定义名为 UI Layer 和 Services Tier 的两个工作集,您将在其中使用构成 UI 或服务的几个项目。
要添加新工作集,请执行以下操作:
- 右键单击项目浏览器,然后单击 Assign Working Sets。
- 在下面所示的 Working Set Assignments 窗口中,单击 New。键入工作集的名称,然后选择工作集中需要包括的项目。
- 完成后单击 Finish,然后单击 OK 以关闭 Working Set Assignments 窗口。
现在指定了工作集,您可以按工作集组织 Package Explorer。
- 单击位于视图右上角的菜单,然后选择 Top Level Elements > Working Sets。
- 从同一个菜单中,选择 Configure Working Sets 以选择需要在 Package Explorer 中查看的工作集。
![]() ![]() |
![]()
|
正如先前所见,几乎所有搜索命令都允许您按工作集限定搜索范围,这意味着在大型工作区中进行搜索可能花费更少的时间。可用于搜索的常见工作集选项允许您一次选择多个选项。
如果在 Project 窗口中取消选中 Build Automatically 复选框,则可以手动构建项目。您还可以手动构建工作集,在大型工作区中,这样做能节省时间。手动构建工作集将限制 Eclipse 仅构建工作集中定义的项目,而不是构建整个工作区。
轻松重构
在大多数项目中,代码重构对于添加特性、修复缺陷或者完成迭代非常必要。Eclipse 已经提供了有效的重构工具,但是 Eclipse Europa 已经向 Java 工具中添加了更多重构工具。
参数-对象重构 将使您可以轻松地引用参数对象,从而简化方法签名。考虑清单 5。
public class Barn { private String color; private int stories; private int numberOfDoors; private Barn() {} public static Barn createBarn(String color, int stories, int numberOfDoors) { Barn b = new Barn(); b.color = color; b.stories = stories; b.numberOfDoors = numberOfDoors; return b; } /* Rest of the class ... */ } |
在构建 Barn
对象时,我必须指定许多内容。但是我可能需要在将来指定一些内容,从而使工厂方法(createBarn()
)更聪明,而且我不希望总是更改方法签名或者面对大量重载的 createBarn()
方法。
要引入参数对象,右键单击该方法 —— 在本例中为 createBarn()
—— 并选择 Refactor > Introduce Parameter Object。在 Introduce Parameter Object 窗口中键入参数对象的名称(例如 BarnInfo
),如图 18 所示。如果需要在新类中创建 public accessor,请选中 Create getters 和 Create setters 复选框。可以根据您的目的确定是把新类创建为顶级类还是把新类创建为正在修改的类的内部类(在本例中为 Barn
)。
您可以把原始方法保留为委托并同时把它标记为不赞成。如果认为其他人可能要在您的代码库外使用旧方法,并且您需要扩展使类具有向后兼容性,那么这样做可能是个好主意。单击 Preview 以查看将要做出的所有修改,这样您可以撤销不需要的内容。
重构后,新类和更改将类似如下所示的内容。
public class Barn { private String color; private int stories; private int numberOfDoors; private Barn() {} public static Barn createBarn(BarnInfo barnInfo) { Barn b = new Barn(); b.color = barnInfo.getColor(); b.stories = barnInfo.getStories(); b.numberOfDoors = barnInfo.getNumberOfDoors(); return b; } /* Rest of the class... * } |
![]() ![]() |
![]()
|
内联重构(Inline refactoring)是一个智能的重构工具,它将尝试把分配的本地值放到直接内联的本地值中,同时跳过变量的创建和使用。清单 7 中的示例代码演示了正被创建的本地变量 —— message
—— 并且在后面的 System.out.println()
调用中使用它。
public void moo() { String message = "My name is " + name + ". Moo!"; System.out.println(message); } |
要删除此本地变量,请在 System.out.println
方法中单击 message
,然后选择 Refactor > Inline。Eclipse 将提示您替换出现的变量,然后可以单击 Preview 或 OK。Preview 显示将要执行的更改,这样您可以撤销不希望执行的修改。重构后,代码将类似清单 8 所示:
public void moo() { System.out.println("My name is " + name + ". Moo!"); } |