-
Java 21. Record PatternBackEnd/Java 2024. 12. 11. 23:00반응형
Record Pattern
Java 19 preview, Java 21 정식으로 출시된 Record Pattern은 Record 클래스를 instanceof pattern matching과 함께 사용할 때 내부 필드에 바로 접근할 수 있는 기능입니다.
다음은 Record 클래스와 instanceof pattern matching을 함께 사용한 코드입니다.
record Point(double x, double y) { } public static void findDistanceIfPoint(Object object) { if (object instanceof Point p) { double distance = Math.hypot(p.x(), p.y()); System.out.printf("원점으로부터의 거리는 %.3f입니다.\n", distance); } }
Record Pattern을 적용하면 instanceof pattern matching 시 Record 클래스를 구조분해하여 내부 필드에 바로 접근할 수 있습니다.
record Point(double x, double y) { } public static void findDistanceIfPoint(Object object) { if (object instanceof Point(double x, double y)) { // (var x, var y) 대체 가능 double distance = Math.hypot(x, y); System.out.printf("원점으로부터의 거리는 %.3f입니다.\n", distance); } }
Record Pattern은 중첩된 Record 클래스에서도 사용할 수 있습니다.
record Point(double x, double y) { } record Line(Point p1, Point p2) { } public static void findDistanceIfPoint(Object object) { if (object instanceof Point(double x, double y)) { // (var x, var y) 대체 가능 double distance = Math.hypot(x, y); System.out.printf("원점으로부터의 거리는 %.3f입니다.\n", distance); } if (object instanceof Line(Point(var x1, var y1), Point(var x2, var y2))) { double distance = Math.hypot(x2 - x1, y2 - y1); System.out.printf("두 점 사이의 거리는 %.3f입니다.\n", distance); } }
반응형'BackEnd > Java' 카테고리의 다른 글
Java 18-21. 주요 변경 내용 (0) 2024.12.13 Java 21. Switch Pattern Matching (0) 2024.12.12 Java 12-17. 주요 변경 내용 (0) 2024.12.10 Java 17. Sealed Class (1) 2024.12.09 Java 16. Record Class (2) 2024.12.08