record ν‚€μ›Œλ“œ

java 14λΆ€ν„° μΆ”κ°€λœ ν‚€μ›Œλ“œ

Java의 record ν‚€μ›Œλ“œλŠ” 데이터 클래슀λ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 데이터 ν΄λž˜μŠ€λŠ” μˆœμˆ˜ν•˜κ²Œ 데이터λ₯Ό λ³΄μœ ν•˜κΈ° μœ„ν•œ 클래슀둜, 일반적인 ν΄λž˜μŠ€μ™€ 달리 μ•„λž˜μ™€ 같은 νŠΉμ§•μ„ κ°€μ§„λ‹€.

  • λΆˆλ³€μ„± : 데이터 클래슀의 μΈμŠ€ν„΄μŠ€ μƒμ„±λœ ν›„ 변경이 λΆˆκ°€λŠ₯ν•˜λ‹€.

  • equals(), hashCode(), toString() λ©”μ†Œλ“œ μžλ™ 생성

  • μƒμ„±μž μžλ™ 생성

μž₯점

μž₯점을 μ •λ¦¬ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  1. κ°„κ²°ν•œ μ½”λ“œ - getter(), setter(), equals(), hashCode(), toString() λ“±μ˜ λ©”μ„œλ“œλ₯Ό μžλ™μœΌλ‘œ 생성

  2. λΆˆλ³€μ„± - record ν•„λ“œλŠ” final둜 μ„ μ–Έλ˜μ–΄ λΆˆλ³€ 객체λ₯Ό μ‰½κ²Œ λ§Œλ“€ 수 μžˆλ‹€. λΆˆλ³€ κ°μ²΄λŠ” 예츑 κ°€λŠ₯ν•˜κ³  μ•ˆμ „ν•˜λ©° 닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ μœ μš©ν•˜λ‹€

  3. κ°’ 객체(VO) - β€˜recordβ€™λŠ” κ°’ 객체λ₯Ό λ‚˜νƒ€λ‚΄κΈ° 이상적이닀. κ°’ κ°μ²΄λŠ” 값에 μ˜ν•΄ μ‹λ³„λ˜λ©°, λ‚΄μš©μ΄ λ™μΌν•˜λ©΄ λ™λ“±ν•˜λ‹€κ³  κ°„μ£Όλœλ‹€. record ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 의미λ₯Ό λͺ…ν™•νžˆ ν‘œν˜„ κ°€λŠ₯ν•˜λ‹€.

  4. μœ μ§€ 보수 용이 - ν•„λ“œλ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  λ•Œ μ½”λ“œλ₯Ό μ—…λ°μ΄νŠΈν•˜κΈ° νŽΈλ¦¬ν•˜λ‹€.

  5. 데이터 전솑 - β€˜recordβ€™λŠ” 데이터λ₯Ό μ „λ‹¬ν•˜κ±°λ‚˜ λ°˜ν™˜ν•˜κΈ° μœ„ν•΄ 쒋은 μš©λ„λ‘œ νš¨κ³Όμ μ΄λ‹€. 예λ₯Όλ“€μ–΄, λ©”μ„œλ“œμ—μ„œ μ—¬λŸ¬ 값을 λ°˜ν™˜ν•˜λŠ” λŒ€μ‹  β€˜record’λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΄€λ ¨ 데이터λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ λ°˜ν™˜ν•  수 μžˆλ‹€.

μ˜ˆμ‹œ

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

public class Person {
   final String name;
   final int age;
   
   // + μƒμ„±μž, μžλ™ μƒμ„±λ˜λŠ” λ©”μ†Œλ“œ
}

λ‘κ°œλŠ” λ™μΌν•˜λ‹€.

Last updated