What's new for Java 7

Java 7 comes with a set of small enhancements to the Java language (aka Project Coin), a new byte code to dynamically invoke methods and many additions to the libraries. The Eclipse compiler implements all the new features of Java 7 and all Eclipse JDT features like e.g. search and refactoring have been updated to support Java 7. Besides that, some new features got added:

Improved Type Inference for Generic Instance Creation (Diamond)
Content assist inserts diamond Where possible, content assist for constructor invocations now inserts a diamond instead of explicit type arguments.

Content assist after 'new HashMap'

Result:

Content assist inserted 'new HashMap<>()'

Detection of redundant type arguments The compiler can now detect redundant specification of type arguments, which you can remove via the Remove type arguments quick fix.

Redundant specification of type arguments

This option is disabled by default but can be enabled on the Java > Compiler > Errors/Warnings preference page:

Redundant type arguments warning

New Insert inferred type arguments quick assist You can insert inferred type arguments of a diamond via a quick assist.

Insert inferred type arguments

Hint: This also works as a quick fix in 1.5 and 1.6 code, where the diamond is a syntax error.

Multi-catch
New Surround with try/multi-catch quick fix The new action Source > Surround With > Try/multi-catch Block allows you to surround selected statements with a try/multi-catch block. This is also available as Surround with try/multi-catch quick fix in case there are multiple uncaught exceptions.

Surround with try/multi-catch

New Add exceptions to existing catch clause quick fix The new Add exceptions to existing catch clause quick fix allows you to add uncaught exceptions to an existing catch clause.

Add exceptions to existing catch clause

New Use separate catch blocks quick assist The new Use separate catch blocks quick assist allows you to replace a multi-catch clause with individual catch blocks, one for each exception in the multi-catch clause.

Use separate catch blocks

New Move exceptions to separate catch block quick assist The new Move exceptions to separate catch block quick assist allows you to pick out one or more selected exceptions from a multi-catch clause.

Move exceptions to separate catch block

New Combine catch blocks quick assist The new Combine catch blocks quick assist allows you to combine separate catch blocks into a single multi-catch block. The quick assist is offered only when bodies of all the catch blocks are same.

Combine catch blocks

New Remove exception quick fix The compiler gives an error if an exception in a multi-catch clause is already caught by an alternative exception. The new Remove exception quick fix allows you to remove this exception.

Remove exception

Mark Occurrences Mark Occurrences has been updated to understand the multi-catch syntax.

Mark Occurrences

Formatter There are new Line Wrapping options in the formatter for the multi-catch syntax.

These can be configured on Java > Code Style > Formatter preference page under Line Wrapping > Statements > 'multi-catch'.

try-with-resources statement
Detection of unhandled exceptions thrown by automatic close() The compiler detects unhandled exceptions thrown by automatic close() invocation on a resource.

Detection of unhandled exceptions thrown by automatic close()

Mark Occurrences Mark Occurrences has been updated to understand the try-with-resources syntax.

The closing '}' of a try-with-resources statement is marked as a method exit point if the implicit close() invocation throws an exception. The corresponding resource variable is also highlighted.

Mark Occurrences

Formatter There are new Line Wrapping and White Space options in the formatter for the try-with-resources syntax.

These can be configured on Java > Code Style > Formatter preference page under Line Wrapping > Statements > 'try-with-resources' and White Space > Control Statements > 'try-with-resources'.

Simplified Varargs Method Invocation
New Add @SafeVarargs quick fix The new Add @SafeVarargs quick fix is offered for potential heap pollution warnings on method declarations.

Add @SafeVarargs

The quick fix is also offered from call sites.

Add @SafeVarargs to declaration

New Remove @SafeVarargs quick fix The new Remove @SafeVarargs quick fix is offered for incorrect usage of @SafeVarargs annotation.

Remove @SafeVarargs

Remove @SafeVarargs

Strings in switch
Convert 'switch' to 'if-else' quick assist The Convert 'switch' to 'if-else' quick assist has been updated for strings in switch.

Convert 'switch' to 'if-else' quick assist

Note that the quick assist avoids a NullPointerException in the resultant code.

Polymorphic Methods
Polymorphic method signature in Javadoc hover Javadoc hovers for references to polymorphic methods show the actually used method signature.

Polymorphic method signature in javadoc hover

Miscellaneous
Evaluation support for Java 7 The evaluation engine in JDT debug has been updated to support Java 7.

You can now use all of the new code structures from Java 7 in:

  • Display / Inspect actions
  • Display view
  • Assign variable value operations
  • Breakpoint conditions

For example, switch on string is supported in breakpoint conditions:

Breakpoint condition example using switch on string

Execution environment for Java 7 When configuring JREs and execution environments, you now have the ability to configure a Java 7 execution environment:

The execution environments preference page

Assign variable value support for Java 7 The feature for changing the value of a variable while debugging has been updated for Java 7 to support underscores in literals and binary literals:

An example of assigning a binary literal with underscores to an int

API Tools support for Java 7 The execution environment description for Java 7 is available from the corresponding update site. After installing it, one can detect invalid references to Java 7 system libraries:

The API Errors/Warnings preference page showing the new Java 7 EE description