Java 17
자바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 클래스
- 다른 클래스 상속 불가
댓글남기기