파이문

JDK 14 톺아보기 본문

Java

JDK 14 톺아보기

민Z 2020. 10. 7. 21:56

JDK14

자바 14 가 새로 나왔다(고 하기엔 좀 되었지만...).
엄청난 삽질로 인텔리제이에 자바 14가 돌아가도록 세팅 했다. (기회가 된다면 정리를 따로 하려고 한다.)

아무튼! 14 의 new feature 들을 하나씩 살펴보면서 정리하려고 한다.

Records

새로운 예약어이다!

평소 코딩을 하다 보면 객체 값이 변하지 않기를 원하는 경우가 있다.

public class OrgMessage {
    private final int id;
    private final String message;

    public RequestDataOrg(int id, String message) {
        this.id = id;
        this.message = message;
    }

    public int getId() {
        return id;
    }

    public String getMessage() {
        return message;
    }
}

이 처럼 클래스 변수들을 final 로 선언하고 setter 를 만들지 않는 경우가 대부분일 것이다. jdk14 부터는 records 라는 개념이 존재 하며 기본적으로 immutable 한 객 체를 만들고 싶을 때 사용한다. 즉 위의 코드를 records 로 변경하면 이렇게 바꿀 수 있다.

public record NewMessage(int id, String message) {}

여기엔 gettersetter 도 없다. 그러나 사용할 때는 get 을 쓸 수 있다. (정확히는 get 으로 시작하지는 않고 의미상 get 이다.)

ResponseData destMessage = new NewMessage(srcMessage.id() * 2);

records 에서 사전에 정의한 변수 값과 동일한 함수가 자동으로 생성(?) 된다. 그래서 호출은 위와 같이 그냥(??) 하면 된다. 그러나 immutable 을 지원하기 때문에 set 에 관련한 메서드는 없다.

참고 JEP 359

Comments