Java 17

2022. 8. 23. 23:58Java/버전별 변화

switch의 pattern matching

Java의 표현력을 향상시키기 위해 아래와 같은 예시로 switch문의 pattern matching 기능을 강화했습니다.

static record Human (String name, int age, String profession) {}

public String checkObject(Object obj) {
    return switch (obj) {
        case Human h -> "Name: %s, age: %s and profession: %s".formatted(h.name(), h.age(), h.profession());
        case Circle c -> "This is a circle";
        case Shape s -> "It is just a shape";
        case null -> "It is null";
        default -> "It is an object";
    };
}

public String checkShape(Shape shape) {
    return switch (shape) {
        case Triangle t && (t.getNumberOfSides() != 3) -> "This is a weird triangle";
        case Circle c && (c.getNumberOfSides() != 0) -> "This is a weird circle";
        default -> "Just a normal shape";
    };
}

더 강력해진 Java 내부 API 캡슐화

중요한 내부 API를 제외하고는 JDK의 모든 내부 요소를 강력하게 캡슐화합니다. 아래와 같은 리플렉션 코드는 더 이상 동작하지 않습니다.

var ks = java.security.KeyStore.getInstance("jceks");
var f = ks.getClass().getDeclaredField("keyStoreSpi");
f.setAccessible(true);
728x90

'Java > 버전별 변화' 카테고리의 다른 글

Java 11  (0) 2022.01.06
Java 15  (0) 2021.10.07
Java 14  (0) 2021.09.25
Java 13  (0) 2021.09.19
Java 12  (0) 2021.09.06