์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

Java ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ : 11 -> 17 -> 21

๐Ÿ˜Ž ์ง€์‹ in Action/Java & Kotlin

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2025. 10. 7. 13:20

๋ณธ๋ฌธ

 

Java 11

Records (Java 14)

  public record User(Long id, String name) {}
  // equals, hashCode, toString

 

Switch Expressions (Java 14)

  // Before
  String result;
  switch (day) {
      case MONDAY:
      case FRIDAY:
          result = "Busy";
          break;
      case SATURDAY:
      case SUNDAY:
          result = "Relax";
          break;
      default:
          result = "Normal";
  }

  // After
  String result = switch (day) {
      case MONDAY, FRIDAY -> "Busy";
      case SATURDAY, SUNDAY -> "Relax";
      default -> "Normal";
  };

Text Blocks (Java 15)

  // After
  String json = """
      {
        "name": "John",
        "age": 30
      }
      """;

Pattern Matching for instanceof (Java 16)

  // Before
  if (obj instanceof String) {
      String str = (String) obj;
      System.out.println(str.length());
  }

  // After
  if (obj instanceof String str) {
      System.out.println(str.length());
  }

 

Java 17

Sealed Classes (Java 17) : ์ƒ์†์„ ์ œํ•œ์ ์œผ๋กœ ํ—ˆ์šฉ 

  public sealed class Shape 
      permits Circle, Rectangle, Triangle {}

  public final class Circle extends Shape {}
  public final class Rectangle extends Shape {}
  public final class Triangle extends Shape {}

 

Java 21

Virtual Threads : /

- ๋‹ค๋ฅธ ๊ธ€์—์„œ ํ•œ ๋ฒˆ์— ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค 

 

Pattern Matching

  // Before
  if (obj instanceof String) {
      String s = (String) obj;
      System.out.println(s.toUpperCase());
  } else if (obj instanceof Integer) {
      Integer i = (Integer) obj;
      System.out.println(i * 2);
  }

  // After
  switch (obj) {
      case String s -> System.out.println(s.toUpperCase());
      case Integer i -> System.out.println(i * 2);
      case null -> System.out.println("null");
      default -> System.out.println("unknown");
  }

Record Patterns

  record Point(int x, int y) {}

  // Pattern matching with records
  if (obj instanceof Point(int x, int y)) {
      System.out.println("x: " + x + ", y: " + y);
  }

Sequenced Collections

  // ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์— ์ผ๊ด€๋œ API
  List<String> list = List.of("A", "B", "C");

  list.getFirst();  // "A"
  list.getLast();   // "C"
  list.reversed();  // [C, B, A]

  // Set, Map์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ

Unnamed Patterns and Variables : ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ _๋กœ ํ‘œ์‹œ 

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ