expect und actual
Plattformspezifische Implementierungen
expect und actual ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Der Bedarf an plattformspezifischem Code
Manche Funktionen haben keine gemeinsame Implementierung – etwa das Ermitteln des Betriebssystemnamens, einer UUID oder der aktuellen Plattform. KMM löst dies mit dem Mechanismus expect/actual.
expect-Deklarationen
In commonMain deklarieren Sie eine expect-Funktion oder -Klasse – einen Vertrag ohne Implementierung. Gemeinsamer Code kann sie aufrufen.
// commonMain
expect fun platformName(): Stringactual unter Android
Jede Plattform stellt eine actual-Implementierung bereit, die der Signatur entspricht.
// androidMain
actual fun platformName(): String = "Android " + android.os.Build.VERSION.SDK_INTactual unter iOS
Das iOS-Source-Set stellt eine eigene Version bereit, die native APIs verwendet.
// iosMain
import platform.UIKit.UIDevice
actual fun platformName(): String =
UIDevice.currentDevice.systemName + " " + UIDevice.currentDevice.systemVersionVerwendung im gemeinsamen Code
Gemeinsamer Code ruft die erwartete Funktion auf, als wäre sie vorhanden; der Compiler verknüpft für jedes Target das passende actual.
// commonMain
class Platform {
val name: String get() = platformName()
}expect-Klassen
Sie können eine vollständige Klasse als expect deklarieren. Jede Plattform stellt eine actual-Klasse mit passenden Membern bereit.
// commonMain
expect class FileReader(path: String) {
fun read(): String
}Implementierungen von actual-Klassen
Die Plattformen implementieren die erwartete Klasse mit nativen Datei-APIs (z. B. Java IO unter Android und Foundation unter iOS).
// androidMain
actual class FileReader actual constructor(private val path: String) {
actual fun read(): String = java.io.File(path).readText()
}expect mit typealias
Ein actual kann ein typealias für einen vorhandenen Plattformtyp sein, sodass kein Wrapper erforderlich ist.
// commonMain
expect class Uuid
// jvm/androidMain
actual typealias Uuid = java.util.UUIDRegeln für die Übereinstimmung von Signaturen
Das actual muss exakt mit dem expect übereinstimmen: gleicher Name, gleiche Parameter und gleicher Rückgabetyp. Eine Abweichung führt zu einem Kompilierungsfehler und garantiert so Konsistenz zwischen den Plattformen.
Wann expect/actual nicht verwendet werden sollte
Bevorzugen Sie einfache Schnittstellen mit zur Laufzeit injizierten Plattformimplementierungen, wenn die Abstraktion flexibler sein soll. Verwenden Sie expect/actual nur für kleine, unveränderliche plattformspezifische Grundfunktionen.
Eine Veranschaulichung mit gemeinsamem Code
Außerhalb von KMM besteht dieselbe Idee einfach darin, eine Abstraktion aufzurufen. Hier steht eine einfache Funktion stellvertretend für den Plattformaufruf.
fun platformName(): String = "Demo Platform"
fun main() {
println("Running on " + platformName())
}Kurztest
Wo wird eine expect-Deklaration geschrieben, und wo befinden sich ihre actual-Implementierungen?
Zusammenfassung
expect/actual überbrückt Unterschiede zwischen Plattformen:
expectdeklariert den Vertrag incommonMainactualimplementiert ihn pro Plattform (oder übertypealias)- Signaturen müssen exakt übereinstimmen
- Für flexible Abstraktionen sollten Sie Schnittstellen bevorzugen
Als Nächstes: Geschäftslogik teilen.
Häufig gestellte Fragen
Ist die Lektion „expect und actual“ kostenlos?
Ja — der vollständige Text von „expect und actual“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „expect und actual“?
Plattformspezifische Implementierungen Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „expect und actual“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- KMM-Projektstruktur
- expect und actual
- Geschäftslogik gemeinsam nutzen
- Plattform-APIs