티스토리 뷰

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 문에서도 레코드 패턴을 사용하여 가독성을 높일 수 있음
✅ 데이터 중심 개발에서 특히 유용함

💬 여러분은 레코드 패턴을 어디에 활용하고 싶나요?
📝 댓글로 여러분의 의견을 공유해주세요! 😊

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함