发行版 3.0 中的新增内容

以下是自从发行版 2.1 以来对 Eclipse 发行版 3.0 的 Java 开发工具所作的更有意义或更重大的更改:

Java 编辑器

在 Java 编辑器中折叠 Java 编辑器现在支持将代码区域进行折叠。悬浮在折叠的 Java 元素上使您可以看到隐藏的代码:

显示折叠的导入、内部类型和方法主体的屏幕快照

目前,可以折叠 import 语句、注释、类型和方法主体。可以在 Java > 编辑器首选项页面上的折叠选项卡上配置是否应在新的编辑器上启用折叠:

显示折叠首选项的屏幕快照
JDT UI 提供了一个扩展点来扩展可用的折叠集合。

高级突出显示 Java 编辑器现在可以根据源代码的语义(例如,静态字段、局部变量和静态方法调用)来突出显示源代码。当通过 Java > 编辑器 > 语法首选项选项卡来启用高级突出显示时,新的高级突出显示选项会显示在列表中。

高级突出显示的示例。

还存在用于突出显示运算符和方括号的新选项,并且斜体是新支持的样式。

快速类型层次结构视图 在 Java 编辑器中选择类型、方法或包引用并按 Ctrl+T 以查看快速类型层次结构视图。对于方法,您可以查看提供此方法的所有子类型和超类型。

重复 CTRL+T 以在正常类型层次结构和超类型层次结构视图之间切换。

类型层次结构结构化视图

快速概要显示继承的成员 在重复键序列 Ctrl+O 之后,Java 编辑器中的快速概要(源 > 打开概要或 Ctrl+O)现在显示继承的成员:

快速概要

同样适用于快速结构(Ctrl+F3)。

Java 编辑器中的智能插入输入方式 Java 编辑器现有具有“智能插入”方式,可以通过编辑 > 智能插入方式(Ctrl+Shift+Insert)来切换该方式。

在“智能插入”方式下,编辑器提供特定于 Java 的额外功能,可以在 Java > 编辑器 > 输入首选项选项卡上配置这些功能。例如,在插入分号或右花括号之前,“智能分号”和“智能左花括号”选项会分别将插入标记移至行的末尾。

在粘贴时更新导入 复制或剪切 Java 代码还会捕获关于复制的代码需要哪些导入声明的信息。当粘贴代码时将自动添加需要的导入。可以使用 Java > 编辑器 > 输入 > 在粘贴时更新导入首选项设置来配置此功能。
改进了通过 Java 名称的光标定位 Java 编辑器的 word-at-a-time 操作现在会考虑 Java 标识的典型“CamelCase”表示法。例如,标识“getFoo”上的下一个单词会在“get”和“Foo”之间造成额外的停止。Java 名称的光标定位行为由 Java > 编辑器 > 导航首选项页面上的选项控制。
新的代码格式化程序

Java 代码格式化程序提供了许多改进:Java > 代码样式 > 代码格式化程序首选项页面允许您从现有的概要文件中进行选择、定义您自己的概要文件并与其他用户共享概要文件。

代码格式化程序首选项页面

新的格式化程序的可配置性很高,具有 140 个以上的选项,涉及从花括号定位到折行最后到 Javadoc 注释格式化的所有内容。

代码格式化程序概要文件编辑对话框

格式化多个文件 还对 Java 项目、源文件夹和包启用了“格式化”命令。当调用时,将根据当前配置的格式化程序设置来格式化所有包含的源文件。
拼写检查 已将拼写检查支持添加至 Java 编辑器。在 Java > 编辑器 > 拼写首选项页面上启用它并指定字典之后,拼写错误将显示在 Java 编辑器中,并且相应的快速修正变为可用的。

拼写纠错建议的示例

您可以将字典提供给内容辅助(可选)。然而,当前在 Eclipse 中未包括字典。必需的格式只是由换行符分隔的单词列表,并且“快速修正”允许您将新的单词添加至字典。添加字典将受到欢迎。

拼写首选项页面

块注释 可以使用源 > 添加块注释来快速地将 Java 编辑器中的文本选择转化为块注释。相反,源 > 除去块注释命令则除去光标位置周围的块注释。
切换注释命令 Java 编辑器中旧的源 > 注释源 > 取消注释命令已被源 > 切换注释(Ctrl+/)命令替换,如果当前选择的源行都已注释,则该命令将这些源行全部取消注释,否则,则将它们全部进行注释。(您可以通过工作台 > 键首选项页面将键盘快捷键绑定至仍可用的旧命令)。
增量内容辅助 选择 Java > 编辑器 > 代码辅助首选项选项卡上的自动插入公共前缀以在 Java 编辑器中使用 shell 样式的增量补全。如果可用的补全不具有公共前缀,则会显示建议弹出窗口。
动态地标记文件中的出现 可以在 Java 编辑器中使用新的标记出现工具栏按钮(“标记出现”工具栏按钮的图形或命令(Alt+Shift+O)来标记所选元素的出现。在 Java > 编辑器 > 标记出现首选项页面上,您可以将元素配置为已标记。

标记出现

将使用“出现”注释来标记所选元素的出现,该注释的表示可以使用“注释”首选项页面(工作台 > 编辑器 > 注释)来配置。

当所选元素更改时,会自动更新已标记的出现。缺省情况下,已标记的内容是粘滞的,也就是说,即使在当前插入标记位置处没有有效的 Java 元素时仍保持被突出显示。

可以使用“除去出现注释”源命令(Alt+Shift+U)来快速除去已标记的出现。
突出显示方法出口点

将光标放置在方法的返回类型上将突出显示所有方法出口点。可以通过首选项 Java > 编辑器 > 标记出现来启用对出口点的突出显示。

具有突出显示的出口点的方法

标记所抛出异常的位置 当选择异常时,可以通过触发操作搜索 > 异常出现以在 Java 编辑器中标记抛出异常的位置。如果出现标记是通过 Java > 编辑器 > 标记出现首选项页面打开的,则将自动标记这些位置。

标记可抛出的

Java 编辑器显示已覆盖的方法 新的“覆盖指示符”注释(请参阅工作台 > 编辑器 > 注释首选项页面)标记实现或覆盖另一方法的方法。缺省情况下,覆盖和实现图标出现在左边的垂直标尺中;单击该图标以浏览至超级方法:

具有覆盖指示符的图形

在向上滚动的悬浮式帮助中显示的多个注释 当多个注释显示在文本编辑器的标尺中时,当在它们上面悬浮时,它们将并排显示。可以单独访问警告和操作(如快速修正、设置断点和添加书签等)。缺省情况下禁用此功能,但可以在 Java > 编辑器 > 悬浮式帮助首选项选项卡上启用它。

当悬浮在垂直标尺中的多个注释上时,向上滚动的悬浮式帮助会并排显示它们

新的快速辅助提示 当“快速辅助”可用时,如果在 Java 编辑器中输入,“快速辅助”提示(绿色电灯泡)会显示在左页边空白中。使用编辑 > 快速修正(Ctrl+1)或单击电灯泡来查看建议。可以通过从 Java > 编辑器> 外观首选项选项卡中选择快速辅助电灯泡来启用此功能。

快速辅助电灯泡

快速修正的链接方式 几个“快速修正”结果现在以链接(模板)方式出现。在调用“快速修正”之后使用 Tab 和 Shift+Tab 以在生成的返回类型、方法名称、自变量类型和自变量名称之间浏览。使用链接方式的“快速修正”的示例:
  • 创建新方法
  • 创建新字段、参数或局部变量
  • 添加新自变量
  • 将语句指定给新的局部变量或字段
链接方式提供其它建议:不同的名称、类型或自变量。

自变量猜测的示例:

“添加自变量”- 链接方式下的快速修正和结果

异常猜测的示例:

“添加抛出声明”- 链接方式下的快速修正和结果

改进了标识猜测 当添加字段、变量或参数时,快速修正会尝试为新的标识猜测一个适合的名称。使用新的链接方式功能,现在将提供多个建议。
“指定给局部变量”快速修正猜测标识
改进了对于参数不匹配的快速修正 添加了对于不匹配的参数的几个新 Java 快速修正,包括用于强制类型转换、交换、添加或除去自变量或方法参数的快速修正。

对于不匹配的参数的快速修正

新的快速辅助 新的快速辅助已添加至 Java 编辑器。尝试
  • 对变量使用 Ctrl+1 来分割和联结其变量声明
  • 对“if”语句使用 Ctrl+1 来将其主体转换为块或添加新的“else”块
  • 对方法参数使用 Ctrl+1 来将它指定给新字段
  • 对方法声明使用 Ctrl+1 来在超类型中创建方法
“在超类型中创建”快速辅助

字段参数快速辅助

使用代码辅助创建 getter 和 setter 除了创建覆盖方法以外,代码辅助还可以帮助创建 getter、setter、缺省构造函数和方法存根。将光标置于成员之间的类型主体中并按 Alt+/ 以获取创建方法存根的建议。

代码辅助上的 Getter

创建构造函数的快速方式 新的 Java 命令源 > 使用字段生成构造函数创建初始化所选字段的新构造函数。从额外构造函数参数中选择要初始化的字段,该参数的顺序通过对话框中的向上/向下按钮控制。

具有字段的构造函数

源 > 从超类添加构造函数命令现在弹出一个对话框,以便您可以选择应将哪些超类的构造函数插入当前类中。快速辅助功能部件仍可以用来插入而无需提示。

Java 调试器

用于检查/显示的弹出窗口

求值弹出窗口现在用于所有“显示”和“检查”结果。

检查快速弹出窗口

逻辑结构

Java 调试器现在允许以更简洁且有意义的形式来显示某些 Java 类型(包括集合和映射)。这些逻辑结构由“变量”视图中的切换按钮控制。
逻辑结构

系统线程过滤器

缺省情况下,现在已从调试视图过滤掉系统线程。该视图的下拉菜单中的显示系统线程命令打开或关闭该过滤器。

任何行上的单步跳入选择

Java 调试器的单步跳入选择命令不再限于当前执行的行。

类准备断点

可以在类准备事件上设置断点。当 Java VM 首次装入指定的类或接口时,将暂挂程序。

类准备断点

异常断点超链接

现在可以在控制台直接根据堆栈跟踪来创建异常断点。单击出现在堆栈跟踪开始处的异常名称下的超链接会对新创建的(或已存在的)异常断点打开属性对话框。

“控制台”视图中的异常断点链接

外部源中的断点

您现在可以将断点放置在外部源代码中(即,不在 Java 项目的构建类路径上的源代码)。无论调试器何时显示外部源代码,运行菜单上的断点创建操作会自动创建外部断点。

重构将更新断点和启动配置

现在,将会由于 Java 源代码重构(如重命名 Java 项目、源文件或类型声明)而更新断点和启动配置。

重命名包括 Java 启动配置

当热代码替换失败时的重新启动选项

当在不支持热代码替换的主机 Java VM 中进行更改时,除选择“继续”或“终止”以外,您现在还具有“重新启动 VM”的选项。

热代码替换失败对话框

可以使缺省 VM 自变量与 JRE 相关联

Java > 安装的 JRE首选项页面现在允许您使一组缺省 VM 自变量与每个 JRE 相关联。无论何时使用这些自变量,都会将它们传递至 VM。

缺省 VM 自变量 JRE 首选项对话框

重构

源和重构操作的快速菜单

可以通过快速菜单来访问重构和源命令。在 Java 编辑器或 Java 视图中选择要处理的元素,并按 Alt+Shift+S 以获取快速源代码菜单或按 Alt+Shift+T 以获取快速重构菜单。

快速重构菜单

重构将更新 Javadoc 中的引用 重命名、移动和更改方法特征符重构现在也会更新 Javadoc 注释中的引用。这包括 @see@link 标记以及 @param@throws 子句中的引用。

由于以下结果,已简化“重命名”对话框:

“重命名类型”对话框

旧的选项更新 Javadoc 注释中的引用已合并到更新引用中。旧的选项更新一般 注释中的引用更新字符串文字中的引用已合并为更新注释和字符串中的文本匹配

使类型重构一般化 在 Java 编辑器中选择变量、参数、字段或方法返回类型的声明并选择重构 > 使类型一般化

使类型一般化 - 向导

该向导显示变量的超类型层次结构。选择可用类型中的其中一种将会更新声明。

使类型一般化 - 之后
引入工厂重构 在 Java 编辑器中选择一种构造函数声明或调用,并选择重构 > 引入工厂

引入工厂 - 之前

引入工厂向导

将创建一个静态工厂方法,它调用现在为专用的构造函数,并且将用对新的工厂方法的调用替换对给定构造函数的所有调用。

引入工厂 - 之后
引入参数重构 在 Java 编辑器中选择一个表达式并选择重构 > 引入参数

引入参数 - 之前

包含方法将获得一个新参数并且选择的表达式将复制到所有调用处的参数列表中。

引入参数 - 之后

改进了更改方法特征符重构 在 Java 编辑器中,选择一个方法并选择重构 > 更改方法特征符

更改特征符向导

重构现在
  • 也会重命名覆盖方法中的参数,
  • 更新 javadocs 中的引用,
  • 在参数类型列中提供内容辅助(Alt+/),
  • 允许更改方法名称,
  • 允许更改抛出的异常。

此外,还改进了参数表中的编辑,以便您可以使用标准导航键(Tab、Shift+Tab、向上箭头和向下箭头)。可以通过单击某个单元或按 F2 或 Enter 键来开始编辑。

从内部类型中抽取方法

对于包含在匿名、本地或非静态成员类型中的 Java 代码,“抽取方法”重构现在允许在外部类型中创建新的方法。

抽取方法向导

抽取方法查找重复的代码段

抽取方法现在查找重复的代码段并且还将它们抽取到新的方法中。例如,当从片段中抽取表达式 foo(a) + bar(b) 时:

抽取方法向导

产生的代码是:

抽取方法向导

Java 工具 - 常规

方法调用层次结构 通过在 Java 编辑器或显示方法的任何 Java 视图中选择浏览 > 打开调用层次结构(Ctrl+Alt+H),您可以打开显示方法调用层次结构的视图。

调用层次结构视图

Javadoc 视图 存在一个新的 Javadoc 视图(窗口 > 显示视图 > 其它 > Java > Javadoc),它显示在 Java 编辑器或 Java 视图中选择的元素的 Javadoc。Javadoc 视图使用 SWT 浏览器窗口小部件来在支持窗口小部件的平台上显示 HTML。

Javadoc 视图

声明视图 存在一个新“声明”视图(窗口 > 显示视图 > 其它 > Java > 声明),该视图显示在 Java 编辑器或 Java 视图中选择的元素的源。

声明视图

类型过滤器

现在可以使用新的 Java > 类型过滤器首选项页面来过滤代码辅助和快速修正建议中显示的一组类型。与这些过滤器模式的其中一种模式匹配的类型将不显示在“打开类型”对话框中且不可用于快速修正和代码辅助建议。这些过滤器不会影响类型是否显示在“包资源管理器”和“类型层次结构”视图中。

类型过滤器首选项页面
改进了过滤支持 包含“过滤器...”条目的特定于 Java 的视图菜单现在包含最近更改的过滤器的相邻可检查条目。

改进的过滤器

归档以外的外部 Javadoc 如果您已在归档中存储了 Javadoc 文档,则您不再需要将该归档解包。Javadoc 位置属性对话框现在支持归档中的文档。选择 JAR 并显示其属性页面(或以对等的方式,项目 > 属性 > Java 构建路径 > > Javadoc 位置)以将文档连接至 JAR。

Javadoc 位置配置对话框

使用浏览 > 打开外部 Javadoc(Shift+F2)以在浏览器中打开 Javadoc。

搜索视图中的分组选项 您可以在视图菜单中将新的“搜索”视图切换至水平或垂直布局方式。现在可以按项目、包、文件或类型来将垂直方式的 Java 搜索结果进行分组。

新的搜索视图

Java 搜索中的匹配过滤器 可以过滤 Java 搜索结果。您可以过滤掉 Javadoc 注释、import 语句、读访问权和写访问权。将仅显示适用于当前搜索的过滤器。

搜索过滤器

搜索本地和匿名类型 搜索操作现在完全支持本地和匿名类型。尤其是您现在可以搜索对所选本地类型的引用。并且,搜索结果现在正确地位于本地或匿名类型中(而不是始终在最外面的封装方法内)。
本地类型 缺省情况下,现在在各种特定于 Java 的视图中将显示本地和匿名类型以及这些视图上隐藏这些类型的过滤器。

类型层次结构中的本地类型

不推荐使用的元素 现在使用斜杠来呈示标记为不推荐使用的类型、字段和方法。

大纲中的不推荐使用的元素

Javadoc 注释中的引用 Java 基础结构现在包括 Javadoc 注释中的引用。您可以在多个位置查看此引用,包括搜索、组织、导入、编辑器中已链接的重命名和编辑器出现标记。

在 Javadoc 标记中标记的出现

对话框字段中的内容辅助 内容辅助(Alt+/)现在也可用于各种 Java 对话框的输入字段。在字段具有焦点时查看它旁边的小电灯泡图标。

“新建类”对话框

“类型层次结构”视图中的工作集支持

“类型层次结构”视图现在支持按工作集过滤。一旦在视图菜单中选择了工作集,则层次结构视图仅显示包含在给定工作集中的 Java 类型,由完成树所需要的父类型展开(使用填满白色的图像显示后者)。

启用了工作集的类型层次结构视图
包类型层次结构中的接口 在包上打开的类型层次结构(F4)现在还显示此包的接口。源文件夹、项目和 JAR 上的层次结构与此相同。

具有接口的包类型层次结构

改进了 NLS 向导 NLS 向导(源 > 使字符串外部化)已更新为处理已外部化的文件:
  • 重命名预先存在的键和值
  • 同时重命名多个键前缀
  • 将已外部化的字符串更改为“已忽略”或更改为原始的未标记(内部化)状态,反之亦然
  • 改进了在属性文件中插入新键

对于已外部化的字符串的 NLS 向导

用户定义的库 您现在可以将外部 JAR 组合成一个命名的库。在 Java > 构建路径 > 用户库首选项页面上创建用户定义的库,然后将它们添加至项目的属性上的构建路径。

用户库首选项页面

与类路径变量条目类似,用户库的类路径条目按名称(而不是本地文件系统的 JAR)来引用用户库。

包资源管理器中的库

Java 编译器

Eclipse Java 编译器符合 JCK1.4a 1.4 方式下的 Eclipse Java 编译器符合 JCK1.4a;在 1.3 方式下,它符合 JCK1.3a。
源文件夹的包含模式 现在可以使 Java 构建路径上的任何源文件夹与某些包含模式相关联,以便有选择地包括某些 Java 源文件。这是对已可用于有选择地排除某些源文件的排除模式的补充。注意,实际上可以遵循以下规则来组合这两种模式:如果您同时指定了这两种模式,则排除模式优先于包含模式。例如,{include="src/", exclude="src/sub"} 表示没有“src/sub/”子树的“src/”树。可以通过项目的构建路径属性来指定包含和排除模式。

排除对话框

查找对 Java 代码中静态成员的间接访问 Java 编译器现在可以查找并标记对静态成员的间接访问。打开此检查的选项可以在 Java > 编译器 > 样式首选项页面上找到(缺省情况下不报告它们)。

对静态成员的间接访问的新诊断

对静态成员的间接访问是生成的类文件的兼容性问题。对于与 1.2 之前的 JDK 版本兼容的类文件,编译器将间接静态引用解析为声明类(示例中的 Y);对于与自 1.2 以后的 JDK 版本兼容的类文件,编译器将静态引用解析为接收器的类型(示例中的 X)。

查找意外的布尔赋值 Java 编译器现在可以查找意外的布尔赋值。打开此检查的选项可以在 Java > 编译器 > 样式首选项页面上找到(缺省情况下不报告它们):

新的编译器样式首选项

用于标记未限定的实例字段访问的 Java 编译器选项 Java 编译器现在可以查找和标记对实例字段的非限定引用。可以从 Java > 编译器 > 样式首选项页面启用此检查(缺省情况下是关闭的)。

此选项支持这样一种编码样式,在该样式中,对实例字段的所有引用都已限定,以便使它们与对局部变量的引用明显地区分开来。

用于标记最终不能正常完成的块的 Java 编译器选项 Java 编译器现在可以查找和标记最终不能正常完成的块(按 Java 语言规范中的定义)。最终不能正常完成的块可能会产生混淆,且被认为是不好的习惯。可以从 Java > 编译器 > 样式首选项页面启用此检查(缺省情况下是警告)。

用于最终不能正常完成的块的新诊断

空的控制流语句 Java 编译器现在可以标记用作控制流语句的主体的空语句。请参阅 Java > 编译器 > 样式 > 空语句下的首选项
用于标记未编入文档的空块的 Java 编译器选项 Java 编译器现在可以查找并标记未随注释一起编入文档的空块。空方法和类型主体的总数也有疑问。可以从 Java > 编译器 > 样式首选项页面启用此检查(缺省情况下是关闭的)。
查找隐藏另一个字段或变量的变量 Java 编译器现在可以查找局部变量声明和隐藏另一个字段或变量的字段。打开此检查的选项可以在 Java > 编译器 > 高级首选项页面上找到(缺省情况下不报告它们)。

新的编译器样式首选项

查找 Java 代码中不必要的类型检查 Java 编译器现在可以查找并标记不必要的强制类型转换或“instanceof”操作。打开这些检查的选项可以在 Java > 编译器 > 未使用的代码首选项页面上找到(缺省情况下不报告它们)。

不必要的类型检查的新诊断

用于标记不必要的已校验的异常的 Java 编译器选项 Java 编译器现在可以查找并标记已声明但未抛出的不必要的已校验的异常。可以从 Java > 编译器 > 未使用的代码首选项页面启用此检查(缺省情况下是关闭的)。

注意,给定的方法可以始终声明抛出比在超类(或接口)中声明的更少的已校验的异常。

未使用的声明抛出的异常的新诊断

新编译器选项的快速修正 新的 Java 编译器选项附带了相应的快速修正:

抛出的异常的不必要的声明:
“除去抛出的异常”快速修正
 对实例字段的未限定的访问:
“限定字段”快速修正
不必要的强制类型转换:
“不必要的强制类型转换”快速修正

在警告或错误上按 Ctrl+1 键,或单击电灯泡以获取建议的快速修正。
Javadoc 注释处理 Eclipse Java 编译器现在可以处理 Javadoc 注释。搜索将报告文档注释中的引用,而重构则更新这些引用。可以从 Java > 编译器 > Javadoc 首选项选项卡控制此功能部件(或使用 项目 > 属性 > Java 编译器 > Javadoc 为各个项目进行设置)。

Javadoc 首选项页面

当打开时,将在 Java 编辑器中标记格式不正确的 Javadoc 注释:
在 Javadoc 中检测到的问题
Javadoc 注释中问题的快速修正 在 Javadoc 注释中启用新的问题标记之后(前一项),您可以在 Java 编辑器中使用快速修正来改正缺少的 Javadoc 标记。只需单击电灯泡或使用编辑 > 快速修正(Ctrl+1)。

插入 Javadoc 快速修正

内联 JSR 字节码 Java 编译器现在可以通过使用 JSR 字节码指令(通常在最终的编译 try 块中使用)来有选择地避免生成类文件,而不是内联相应子例程的指令。生成的类文件稍大一些,但通常装入速度更快。此方式是 JSR 202 的预期支持。请参阅 Java > 编译器 > 一致性和类文件下的首选项。

JUnit 集成

运行需要特殊设置的各个 JUnit 测试 JUnit 现在支持对各个测试进行修饰以便运行测试。这可以通过在 TestCase 类中实现公共静态 setUpTest(Test) 方法来完成,如下所示:
运行各个 JUnit 测试

当即将单独地执行测试(包括重新运行失败的测试)时,将自动使用 setUpTest 方法。将运行由 setUpTest 返回的结果来代替给定的测试,普通用法是用特殊设置或破坏来回绕给定的测试。

改进了 JUnit 视图中的字符串比较 当 JUnit 测试由于字符串不是所期望的而失败时,单击工具栏中的放大镜按钮以在比较查看器中查看字符串之间的差异:

测试失败的 Junit 查看器

字符串比较查看器

法律声明