dev.Log

Record 본문

BACKEND.*

Record

초코푸딩 2023. 2. 5. 12:05

* Record란?

레코드(record)란 "데이터 클래스"이며 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다. 코틀린의 데이터 클래스와 비슷한 느낌이라고 보면 된다. 밑에서 코드를 보겠지만, record 클래스를 정의할때, 그 모양은 정말 데이터의 유형만 딱 나타내는 듯한 느낌이다. 훨씬더 간결하고 가볍기 때문에 Entity 혹은 DTO 클래스를 생성할때 사용되면 굉장히 좋을 듯하다.

출처 : 코딩스타트

 

Q. immutable한 클래스 또는 DataObject를 만드려면 어떻게 해야할까?

우선 방법으로는

1. final 키워드 사용하기

2. setter 없애기

3. hashcode, equals 잘 정의하기

 

public class CodeReview {
   private final String reviewer;
   private final String review;
 
   public CodeReview(String reviewer, String review) {
      this.reviewer = reviewer;
      this.review = review;
   }
 
   public String getReviewer() {
      return reviewer;
   }
 
   public Integer getReview() {
      return review;
   }

}

 

=> 코드가 길어지게 되는데 , 자바 14버전부터 지원하는 Record로 간단히 작성할 수 있게되었다!

 

/*
* 컴파일러는 헤더를 통해 내부 필드를 추론한다. 
* 생성자를 작성하지 않아도 되고 toString, equals, hashCode 메소드에 대한 구현을 자동으로 생성한다.
*/
public record codeReview(String reviewer, String review) {
}

쏘심플!!

 

 

'BACKEND.*' 카테고리의 다른 글

JSP 프리컴파일 옵션  (1) 2023.03.06
ResourceBundle  (0) 2023.03.05
리팩토링1- 함수 선언 변경하기  (0) 2022.11.06
테스트코드  (1) 2022.10.28
ElasticSearch 등록&수정  (0) 2022.10.20
Comments