# [Java] Record



Java 14μ—μ„œ ν”„λ¦¬λ·°λ‘œ λ„μž…λœ 클래슀 νƒ€μž…
순수히 데이터λ₯Ό λ³΄μœ ν•˜κΈ° μœ„ν•œ 클래슀

Java 14버전뢀터 λ„μž…λ˜κ³  16λΆ€ν„° 정식 μŠ€νŽ™μ— ν¬ν•¨λœ RecordλŠ” class처럼 νƒ€μž…μœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.

객체λ₯Ό 생성할 λ•Œ 보톡 μ•„λž˜μ™€ 같이 κ°œλ°œμžκ°€ λ§Œλ“€μ–΄μ•Όν•œλ‹€.


public class Person {
   private final String name;
   private final int age;
 
   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }
 
   public String getName() {
      return name;
   }
 
   public int getAge() {
      return age;
   }
}
  • 클래슀 Person 을 λ§Œλ“ λ‹€.
  • ν•„λ“œ name, ageλ₯Ό μƒμ„±ν•œλ‹€.
  • μƒμ„±μžλ₯Ό λ§Œλ“ λ‹€.
  • getterλ₯Ό κ΅¬ν˜„ν•œλ‹€.

보톡 Entityλ‚˜ DTO κ΅¬ν˜„μ— μžˆμ–΄μ„œ 많이 μ‚¬μš©ν•˜λŠ” ν˜•μ‹μ΄λ‹€.

이λ₯Ό Record νƒ€μž…μ˜ 클래슀둜 λ§Œλ“€λ©΄ μƒλ‹Ήνžˆ λ‹¨μˆœν•΄μ§„λ‹€.


public record Person(
	String name,
    int age
) {}

μžλ™μœΌλ‘œ ν•„λ“œλ₯Ό private final 둜 μ„ μ–Έν•˜μ—¬ λ§Œλ“€μ–΄μ£Όκ³ , μƒμ„±μžμ™€ getterκΉŒμ§€ μ•”λ¬΅μ μœΌλ‘œ μƒμ„±λœλ‹€. λ˜ν•œ equals, hashCode, toString 도 μžλ™μœΌλ‘œ μƒμ„±λœλ‹€κ³  ν•˜λ‹ˆ 맀우 νŽΈλ¦¬ν•˜λ‹€.

λŒ€μ‹  getter λ©”μ†Œλ“œμ˜ 경우 κ΅¬ν˜„μ‹œ getXXX()둜 λͺ…칭을 μ§“μ§€λ§Œ, μžλ™μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” λ©”μ†Œλ“œλŠ” name(), age()와 같이 ν•„λ“œλͺ…μœΌλ‘œ μƒμ„±λœλ‹€.



# [참고 자료]

μ΅œμ’… μˆ˜μ • : 11/15/2021, 1:31:19 PM