1 분 소요

자바9 -> 자바16에 대한 문법위주의 정리입니다.
편리한 기능들이 많네요.
개인적으론 swtich가 바뀐게 가장 맘에 듭니다.


인터페이스 private 메서드

  • 자바9에 추가된 기능으로 인터페이스에 private메서드선언이 가능합니다.
    public interface account {
        login();
        
        private void logging(String id){
            // 로깅
        }
    }
    

try-with-resource

  // 실질적인 final 변수 a
  try(a){
    a.read();
  }catch (Exception e){
  }

콜렉션 팩토리 메서드

  List<Integer> list = List.of(1,2,3);

이런식의 콜렉션 of 메서드가 추가되었다. 기존의 Arrays.asList 의 사용빈도가 줄어들것 같다.

Arrays 메서드 추가

  • Arrays.compare(a,b); // 두 배열을 비교
  • Arrays.mismatch(a,b); // 두 배열에서 다른 인덱스가 어디인가? 같으면 -1

var

  • 로컬 변수 타입 추론
  • 11에서는 람다식에서 사용 가능하다.

String 메서드 추가

  • isBlank() : 공백문자 포함되었는지 판단
  • lines() : Stream의 형태로 라인을 만듬
  • repeat() : n회 반복
  • indent(int n) : n이 짝수일시 들여쓰기 홀수면 내어쓰기
  • transform : 문자열을 특정 형태로 바꾸어줌
  • formatted : String.format을 대신하는 역할

Files

  • Files.writeString(); txt 저장
  • Files.readString(); txt 읽어오기 UTF-8등 유니코드 저장가능

switch

    String a = switch(s) {
        case a -> "A";
        case b -> "B";
        case c -> "C";
        default -> "F"
    } 

스위치로 값을 생성할수있게됩니다 default값 필수!

텍스트 블록

”””
{ “name” : “aa”, “age” : 27 } “”” 이런식으로 여러줄에 있는 문자열을 쉽게 입력할수있게 되었다.

NPE 메시지 개선

  • 이제 NPE가 어디부분에서 null이 나왔는지 알려줍니다.

Stream

  • toList() 메서드 추가
  • mapMulti() : 값을 하나 받아서 여러개를 생성하는 메서드

instanceof와 패턴 매칭

  if(a instanceof String s){
    log.debug(s);
  }
  
  if(!(a instanceof String b)){
    return;
  }
  b.isBlank(); <- 위에서 타입검사를 했다면 아래에서 그타입으로 사용할수있다.

record 클래스

  • 모든 필드가 private final 필드
  • 파라미터를 가진 생성자
  • 같은이름의 메서드(getter)
  • hashCode, equals, toString

  • 특징
    • 기본 생성자 없음
    • 값 변경 메서드없음
    • final 클래스
    • 다른 클래스 상속 불가

댓글남기기