Java 15

2021. 10. 7. 21:36Java/버전별 변화

새로운 기능

Sealed Classes

Java의 Class 계층 구조는 상속을 통해 코드 재사용을 가능하게 합니다. 많은 Class들은 상속되고 재사용되고 있습니다. 하지만 그래픽 라이브러리에서 Shape의 종류와 같이 도메인에 존재하는 다양한 가능성을 모델링 하는 것이 목적인 경우에는 subClass 집합을 제한했을 때, 모델링이 더 간소화 될 수 있습니다.
Sealed Class의 목표는 개별 클래스를 선언할 때, 상속 받을 수 있는 종류의 클래스도 함께 선언하도록 하는 것입니다. 이를 통해 class의 무분별한 상속을 통한 확장이 발생하지 않도록 하는게 가장 중요한 목표입니다.

public abstract sealed class Person permits Employee, Manager { }

예제와 같이 sealed는 abstact 클래스에 사용됩니다. (인터페이스에서도 사용 가능합니다.) 그리고 permits 키워드 뒤의 클래스들만 상속받을 수 있도록 정의하는 것입니다.

public final class Emplyee extends Person { }

public non-sealed class Manger extends Person { }

참고로, Sealed class를 상속 받은 클래스들은 sealed, non-sealed, final 중 하나의 키워드를 포함하고 있어야 합니다.

Hidden Class

Hidden class는 runtime에 class를 생성하고 reflection을 통해 간접적으로 사용하는 프레임워크에서 사용하기 위한 것입니다. hidden class는 access 제어 중첩의 member로 정의될 수 있으며 다른 class와 독립적으로 unload 될 수 있습니다.

Garbage Collectors

앞서 도입되었던, ZGC와 Shenandoah GC가 정식적인 GC로 채택되었습니다.

Text Block

앞서 미리보기로 도입되었던 Text Block이 정식 기능으로 도입되었습니다.

728x90

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

Java 17  (0) 2022.08.23
Java 11  (0) 2022.01.06
Java 14  (0) 2021.09.25
Java 13  (0) 2021.09.19
Java 12  (0) 2021.09.06