Java 17
2022. 8. 23. 23:58ㆍJava/버전별 변화
반응형
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);
반응형