Source code is also available via github.
Strings in switch
final String str = "foo";
switch (str) {
case "foo":
System.out.println("mooh");
break;
case "bar":
System.out.println("miau");
break;
default:
break;
}
Binary integral literals and underscores in numeric literals
final int large = 1_000_000; System.out.println(large); final int binary = 0b1011; System.out.println(binary);
Multi-catch and more precise rethrow
class ExA extends Exception {}
class ExB extends Exception {}
public void testMultiCatch() {
final int a = 0;
try {
if (a == 0) {
throw new ExA();
}
if (a == 1) {
throw new ExB();
}
} catch (ExA|ExB ex) {
System.out.println(ex.getClass() +
" was thrown and caught");
}
}
public void testReThrow() throws ExB {
final int a = 0;
try {
if (a == 0) {
throw new ExA();
}
if (a == 1) {
throw new ExB();
}
} catch (final ExA exa) {
System.out.println("Exa was caught");
} catch (final Exception ex) {
System.out.println(ex.getClass() +
" was thrown, caught and rethrown");
throw ex;
}
}
Improved type inference for generic instance creation (diamond)
final List<String> list = new ArrayList<>();
list.add("Foo");
System.out.println(list);
try-with-resources statement
try (final BufferedReader br = new BufferedReader(new FileReader("./TestAutomaticResourceManagement.java"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (final IOException e) {
}