티스토리 뷰
Java 21에서는 레코드 패턴(Record Patterns) 기능이 추가되어 데이터를 다루는 방식이 더욱 간편해졌습니다.
이제 복잡한 객체에서 필드를 쉽게 추출할 수 있고, 데이터 처리를 더욱 직관적으로 할 수 있습니다.
✅ Java 21의 새로운 문법을 활용해 깔끔한 코드 작성!
✅ 객체의 값을 한 줄로 추출하고 처리 가능!
✅ 불필요한 getter() 호출 없이 간결한 코드 작성 가능!
📌 1. 레코드(Record)란?
레코드(Record)는 불변(Immutable) 객체를 쉽게 만들 수 있도록 Java 14에서 도입된 기능입니다.
데이터를 저장하는 단순한 객체를 만들 때, 기존의 getter(), toString(), equals(), hashCode()를 자동으로 생성해 줍니다.
✅ 레코드의 기본 예제
record Person(String name, int age) {}
위 코드만 작성하면, Java는 자동으로 다음을 생성합니다.
✔ 필드에 대한 getter() 메서드 (name(), age())
✔ toString(), equals(), hashCode() 자동 구현
✔ 생성자 자동 생성
❌ 기존 방식 (Java 14 이전)
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; }
@Override
public boolean equals(Object obj) { /* 비교 로직 */ }
@Override
public int hashCode() { /* 해시코드 로직 */ }
@Override
public String toString() { return "Person{name=" + name + ", age=" + age + "}"; }
}
🔴 너무 많은 코드가 필요합니다!
🔴 데이터를 단순히 저장하는 역할이라면 record를 사용하는 것이 더 좋습니다!
📌 2. 레코드 패턴(Record Patterns)이란?
레코드 패턴은 Java 21에서 추가된 기능으로, 객체를 쉽게 분해(Destructuring)하여 값을 추출할 수 있도록 도와줍니다.
✅ 레코드 패턴을 활용한 값 추출 예제
record Point(int x, int y) {}
static void printPoint(Object obj) {
if (obj instanceof Point(int x, int y)) {
System.out.println("X 좌표: " + x + ", Y 좌표: " + y);
}
}
🟢 위 코드에서 Point 객체의 필드 값 x, y가 자동으로 추출됩니다!
✔ 기존의 point.getX()와 같은 getter()를 사용하지 않아도 됩니다.
✔ 코드가 더 깔끔하고 직관적으로 변합니다!
📌 3. switch 문에서 레코드 패턴 활용하기
Java 21에서는 switch 문에서도 레코드 패턴을 사용할 수 있습니다.
이제 switch 문에서 객체의 필드를 직접 가져와서 처리할 수 있어요!
✅ 레코드 패턴을 활용한 switch 문
record Shape(String type, double area) {}
static String getShapeInfo(Shape shape) {
return switch (shape) {
case Shape(String type, double area) -> "도형 타입: " + type + ", 면적: " + area;
default -> "알 수 없는 도형";
};
}
🟢 객체에서 값을 직접 추출하고 switch 문에서 바로 활용할 수 있습니다!
✔ 불필요한 getter() 호출 없이 필드 값을 바로 사용 가능!
✔ 코드를 더 짧고 가독성 높게 유지할 수 있음!
📌 💡 레코드 패턴을 활용한 switch 문 다이어그램
📌 4. 레코드 패턴을 사용하면 좋은 경우
✅ 대량의 데이터 처리 및 변환
→ JSON, CSV, XML 데이터를 record로 변환하고 분석할 때!
✅ 패턴 매칭이 필요한 경우
→ switch 문에서 다양한 데이터 유형을 처리할 때!
✅ 가독성이 중요한 프로젝트
→ 코드의 유지보수를 쉽게 하고 싶은 경우!
📌 5. 레코드 패턴을 사용하면 안 되는 경우
🚫 객체의 값을 변경해야 하는 경우
→ record는 불변 객체이므로, 필드 값을 변경할 수 없습니다.
🚫 복잡한 비즈니스 로직이 필요한 경우
→ record는 단순한 데이터 저장에 초점이 맞춰져 있습니다.
→ 복잡한 로직이 필요하다면 일반 class를 사용하는 것이 좋습니다.
🚀 결론: 레코드 패턴으로 Java 코드를 더 간결하게 만들자!
🎉 Java 21에서는 레코드 패턴을 사용하여 코드를 더 짧고 가독성 높게 만들 수 있습니다!
✅ record를 사용하면 불필요한 getter() 코드 없이 객체를 다룰 수 있음
✅ switch 문에서도 레코드 패턴을 사용하여 가독성을 높일 수 있음
✅ 데이터 중심 개발에서 특히 유용함
💬 여러분은 레코드 패턴을 어디에 활용하고 싶나요?
📝 댓글로 여러분의 의견을 공유해주세요! 😊
'JAVA' 카테고리의 다른 글
🔍 Java 패턴 매칭(Pattern Matching)이란? 쉽게 이해하는 가이드 (0) | 2025.02.11 |
---|---|
🚀 Java 가상 스레드(Virtual Threads)란? 쉽게 이해하는 가이드 (0) | 2025.02.10 |
Java 21의 새로운 기능과 변화: 최신 업데이트 정리 (1) | 2025.02.04 |
JSP의 JSTL에서 JAVA8 LocalDateTime 사용하기 (0) | 2019.04.24 |
Overloading VS Overriding (0) | 2019.04.15 |
- Total
- Today
- Yesterday
- SQL
- 코딩
- springboot최신기능
- springsecurity6
- 인공지능
- pc게임
- GraalVM
- db설계
- Ai
- 프로그래밍
- java
- java17
- 스프링
- 개발자
- PostgreSQL
- 게임추천
- jakartaee10
- postgresql튜닝
- uuid_vs_serial
- AI혁신
- 스프링부트
- 백엔드
- XBOXSERIESX
- db성능
- 레코드패턴
- varchar
- springboot3
- 클린코드
- Java21
- virtualthreads
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |