Pulse 게시 ·

Kotlin 2.5 베타, companion 블록·확장 실험 기능 제공

JetBrains가 9월 30일 Kotlin 2.5.0-Beta1부터 제공하는 실험적 companion 블록·확장을 소개했다. JVM에서는 블록을 정적 멤버로 컴파일하고, 확장은 companion object가 없는 Java 클래스에도 정의할 수 있다. 컴파일러 플래그가 필요하며, 확장을 쓴 라이브러리는 기능 안정화 전 의존성으로 소비할 수 없다는 제약이 있다.

블록에는 -Xcompanion-blocks, 블록과 확장에는 -Xcompanion-blocks-and-extensions 플래그가 필요하다.

companion 확장은 소유하지 않은 클래스·인터페이스나 Java 타입에도 정의할 수 있다.

멀티플랫폼의 expected companion 블록 멤버를 Java 정적 멤버로 actualize할 수 있다.

기존 companion object 지원은 유지되며 마이그레이션 의무는 없다.

블록으로 전환하면 프로젝트와 의존 코드의 재컴파일이 필요하고, 생태계 도구 지원도 준비 중이다.

기존 companion object가 인터페이스를 구현한다면 블록으로 옮길 수 없다. 단순 상수·팩토리 메서드와 객체 역할을 구분해 적용해야 한다.

원문