JAVA 11 NEW FEATURE 정리

DYKO·2023년 4월 1일
0

JAVA NEW FEATURES

목록 보기
4/4

새로운 String 메서드 추가

  • strip()
    문자열 앞, 뒤의 공백 제거
  • stripLeading()
    문자열 앞의 공백 제거
  • stripTrailing()
    문자열 뒤의 공백 제거
  • isBlank()
    문자열이 비어있거나 공백만 포함되어있을 경우 true를 반환. 즉, String.trim().isEmpty() 호출과 같음
  • lines()
    문자열을 라인 단위로 쪼개는 스트림을 반환
  • repeat(n)
    지정된 수 만큼 문자열을 반복하여 붙여 반환
  • 예제
    String multilineString = "Baeldung helps \n \n developers \n explore Java.";
    List<String> lines = multilineString.lines()
        .filter(line -> !line.isBlank())
        .map(String::strip)
        .collect(Collectors.toList());
    assertThat(lines).containsExactly("Baeldung helps", "developers", "explore Java.");


변수 Type 추론 Lamda 지원

  • Java10에서 추가된 지역변수 Type 추론 기능은 람다에서 사용 불가
  • Java10부터 람다 표현식에서도 var를 사용해서 변수를 선언할 수 있도록 지원
    List<String> sampleList = Arrays.asList("Java", "Kotlin");
    String resultString = sampleList.stream()
        .map((@Nonnull var x) -> x.toUpperCase())
        .collect(Collectors.joining(", "));
    assertThat(resultString).isEqualTo("JAVA, KOTLIN");


Collection API에 toArray 메서드 추가

  • collection 을 통해 손 쉽게 배열을 얻을 수 있음
  • 예제
    List sampleList = Arrays.asList("Java", "Kotlin");
    String[] sampleArray = sampleList.toArray(String[]::new);
    assertThat(sampleArray).containsExactly("Java", "Kotlin");


Predicate 인터페이스에 not 메서드 추가

  • 내부적으로 negate() 메소드를 호출, 결과적으로 같은 함수
  • not 메서드를 통해 가독성 향상(not(isBlank)가 isBlank.negate() 보다 자연스러움)
  • not 구현 로직
    static <T> Predicate<T> not(Predicate<? spuer T> target) {
    Objects.requireNonNull(target);
    return (Predicate<T>)target.negate();
    }
  • 예제
    List<String> sampleList = Arrays.asList("Java", "\n \n", "Kotlin", " ");
    List withoutBlanks = sampleList.stream()
        .filter(Predicate.not(String::isBlank))
        .collect(Collectors.toList());
    assertThat(withoutBlanks).containsExactly("Java", "Kotlin");


기타 변경사항

  • OracleJDK와 OpenJDK 통합
  • HTTP 클라이언트 API를 정식 표준 기능으로 적용
  • File 클래스에 readString, writeString 메서드 추가
  • Nest 기반 액세스 제어
  • java 파일 직접 실행 기능 지원(javac을 통한 컴파일 불필요)


참고자료

New Features in Java 11 - Baeldung
JAVA 버전 별 특징(1~17버전) - 무사뎀벨레의 블로그

profile
엔지니어가 되는 그 날 까지!

0개의 댓글