[JAVA] JAVA version 17의 주요 변화

JAVA 17버전의 주요 변화 사항을 알아본다.

목차

  1. 텍스트 블록
  2. formatted() 메서드
  3. 레코드
  4. 패턴 매칭
  5. case문 개선

텍스트 블록

  • 이전 버전에서는 여러 줄의 텍스트를 작성할때 \n을 추가해야해서 가독성이 좋지 않은 부분이 개선되었다.
  • 예시
    •   String example11 = "SELETE * FROM \"product\"\n" +
                        "WHERE \"country\" = \"KOREA\"\n" +
                        "ORDER BY \"name\";\n";
                          
        String example17 = """
                            SELECT * FROM "product"
                            WHERE "country" = "KOREA"
                            ORDER BY "name;
                            """;
                            //가독성이 훨씬 좋아졌다
      

formatted() 메서드

  • 값을 파싱하는 데 더 편하게 해주는 formatted() 메서드 제공
  • 예시
    •   String example17 = """
        {
            "id": %d,
            "name": %s
        }
        """.formatted(1, "nahyun");
      

레코드

  • 데이터 전달을 위한 객체를 더 빠르고 간편하게 만들기 위한 기능
  • getter를 자동으로 만들어 주기 때문에 애너테이션이나 메서드로 게터를 정의하지 않아도 됨
  • 예시
    •   record Item(String name, int price) {
            //파라미터가 private final로 정의된다
        }
        Item product1 = new Item("product1", 2500);
        product1.price(); //2500
      

패턴 매칭

  • 타입 확인을 위해 사용하던 instanceof 키워드를 개선
  • 이전에는 instanceof 키워드와 형변환 코드를 조합해야 했지만 이제는 바로 형변환 가능

자료형에 맞는 case 처리

  • switch-case문에서 자료형에 맞게 case 처리 가능
  • 예시
    •   static double getIntegerValue(Object object) {
            return switch (object) {
                case Double d -> d.intValue();
                case Float f -> f.intValue();
                case String s -> Integer.parseInt(s);
                default -> 0d;
            };
        }