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) { }