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