☰ Menu

30.09.2026 · Signal Titans Editorial

Kotlin 2.5.0 führt experimentelle Companion-Blöcke und -Erweiterungen ein

JetBrains ergänzt Kotlin 2.5.0 um Companion-Blöcke und Companion-Erweiterungen für optimierte statische Kompilierung und Multiplatform-Interoperabilität.

Minimalistische redaktionelle Illustration eines blauen geometrischen Blocks und eines schwebenden, leuchtenden modularen Teils, das auf einem hellgrauen Hintergrund einrastet.

JetBrains hat Details zu anstehenden Erweiterungen des Companion-Mechanismus in Kotlin ab Version 2.5.0 bekannt gegeben. Die Neuerungen umfassen experimentelle Companion-Blöcke sowie Companion-Erweiterungen, die die Kompilierung statischer Elemente verbessern und die Interoperabilität in Multiplatform-Projekten ausbauen sollen.

Companion-Blöcke und statische Kompilierung

Bisher nutzte Kotlin Companion-Objekte, um Funktionen auf Klassenebene wie Fabrikmethoden, Hilfsfunktionen und Konstanten bereitzustellen. Ab Kotlin 2.5.0 können Entwickler stattdessen eine Syntax für Companion-Blöcke verwenden. Obwohl diese syntaktisch Companion-Objekten ähneln, verändern Companion-Blöcke die Art der Kompilierung grundlegend. Auf der JVM werden sie direkt in statische Elemente übersetzt, anstatt eine dazwischenliegende Companion-Objekt-Instanz zu erzeugen. Dieser Ansatz ermöglicht es in Kotlin-Multiplatform-Projekten, erwartete Elemente von Companion-Blöcken im gemeinsamen Code zu definieren und sie mithilfe regulärer Java-Klassen mit statischen Elementen umzusetzen.

Erweiterung fremder Klassen durch Companion-Extensions

Zusätzlich führt Kotlin 2.5.0 experimentelle Companion-Erweiterungen ein, mit denen Entwickler neue statikähnliche Elemente für bestehende Klassen oder Schnittstellen deklarieren können. Dies funktioniert unabhängig davon, ob der Zieltyp ursprünglich in Kotlin oder Java geschrieben wurde oder ob er bereits ein Companion-Objekt besitzt.

Compiler-Flags und Einschränkungen bei der Kompatibilität

Beide Funktionen sind experimentell und erfordern explizite Compiler-Flags. Companion-Blöcke lassen sich über das Flag `-Xcompanion-blocks` aktivieren, während für Erweiterungen `-Xcompanion-blocks-and-extensions` benötigt wird. Der Einsatz von Companion-Erweiterungen führt dazu, dass der Compiler Vorab-Binärdateien erzeugt. Dadurch können Bibliotheken, die diese nutzen, erst nach der Stabilisierung des Features als stabile Abhängigkeiten verwendet werden.

Bestehende Companion-Objekte bleiben weiterhin vollständig unterstützt. Sie werden auch künftig für Szenarien benötigt, in denen ein Companion ein bestimmtes Interface implementieren muss, da Companion-Blöcke keine eigene Klasseninstanz erzeugen. Laut JetBrains ist eine Migration bestehenden Codes nicht erforderlich. Das Entfernen des Schlüsselworts `object` wandelt Standard-Companion-Objekte nach einer erneuten Kompilierung jedoch in Companion-Blöcke um.

KI-generierte redaktionelle Illustration; kein Dokumentarfoto.

Quelle: The Companions to Come