ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 21. Record Pattern
    BackEnd/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

    댓글

Designed by Tistory.