farmeter / random

0 stars 0 forks source link

Java 14 - New Features #27

Closed farmeter closed 4 years ago

farmeter commented 4 years ago

12, 13 버전에서 preview feature였던 신규 switch 표현식이 14에서 확정되었습니다.

기본적으로 람다식을 지원하며, Statement에서 Expression으로 바뀌면서 아래와 같이 리턴값을 받을 수 있게 되었습니다.

String result = switch (day) {
            case "M", "W", "F" -> "MWF";
            case "T", "TH", "S" -> "TTS";
            default -> {
                if(day.isEmpty())
                    yield "Please insert a valid day.";
                else
                    yield "Looks like a Sunday.";
            } 
        };

만약 return 사용 시 switch가 아닌 해당 메서드가 종료됩니다. 이를 위해 yield 키워드가 추가되었습니다.

https://www.journaldev.com/37273/java-14-features https://multifrontgarden.tistory.com/265

https://www.journaldev.com/37273/java-14-features https://multifrontgarden.tistory.com/265

Preview스펙 : Pattern Matching for instanceof (Preview)

instanceofif 구문 사용 시, 별도로 캐스팅 않아도 된다.

// before Java 14
if (obj instanceof Journaldev) {
  Journaldev jd = (Journaldev) obj;
  System.out.println(jd.getAuthor());
}

// Java 14 Onwards
if (obj instanceof Journaldev jd) {
  System.out.println(jd.getAuthor());
}

Helpful NullPointerExceptions

가장 마음에 드는 feature 인데요.

a.b.c.i = 99; 와 같은 구문에서 NPE 발생 시, line number 뿐 아니라, 원인을 좀더 상세하게 보여 준다.

// before Java 14
Exception in thread "main" java.lang.NullPointerException at Prog.main(Prog.java:5)

// Java 14 Onwards
Exception in thread "main" java.lang.NullPointerException
: Cannot assign field "i" because "a" is null at Prog.main(Prog.java:5)

Preview 스펙 : Records