Kotlin Academy · Lektion

Plattformstyper

Nullbarhet från Java

Lektion 4 av 413 steg

Plattformstyper är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Kotlin möter Java

Kotlin körs på JVM och anropar ständigt Java-kod. Men Java har inget begrepp för nullbara respektive icke-nullbara typer.

Hur hanterar Kotlin då ett värde som kommer från Java? Genom plattformstyper.

Vad är en plattformstyp

En plattformstyp är en typ som Kotlin hämtar från Java och vars nullbarhet är okänd.

Kotlin skriver den som String! i felmeddelanden. Utropstecknet betyder: värdet kan vara null eller icke-null, och Kotlin tvingar inte fram något av alternativen.

Mindre strikt kontroll

För plattformstyper gör Kotlin nullkontrollerna mindre strikta. Ni kan behandla värdet som icke-null utan ett kompileringsfel.

Nackdelen är att ni får en NullPointerException vid körning om värdet faktiskt är null.

Ni väljer typen

När ni lagrar ett värde av en plattformstyp bestämmer ni hur det ska typas:

  • som icke-null String → bekvämt men riskabelt
  • som nullbart String? → säkert och tydligt

Det här Kotlin-exemplet simulerar det valet.

fun fromJava(): String? = "value from Java"

fun main() {
    val safe: String? = fromJava()
    println(safe?.length)
}

Det riskabla valet

Om ni antar att värdet inte är null och källan returnerar null inträffar kraschen vid tilldelningen eller första användningen.

Det här är den dolda faran med plattformstyper.

fun fromJava(): String? = null

fun main() {
    try {
        val risky: String = fromJava()!!
        println(risky.length)
    } catch (e: NullPointerException) {
        println("Null came from the Java side")
    }
}

Annoteringar hjälper

Java-bibliotek kan använda annoteringar som @Nullable och @NotNull.

När de finns respekterar Kotlin dem och ger er en riktig String? eller String i stället för en plattformstyp.

Bästa praxis: utgå från nullbarhet

När ni anropar Java-kod utan annoteringar är det säkrast att behandla resultatet som nullbart.

Typbestäm variabeln med ? och använd säkra anrop, precis som för alla nullbara Kotlin-värden.

fun fromJava(): String? = "data"

fun main() {
    val value: String? = fromJava()
    val length = value?.length ?: 0
    println(length)
}

Defensiva gränser

Behandla Java-gränsen som opålitlig. Validera värden eller ange standardvärden precis när de kommer in i er Kotlin-kod.

Därefter arbetar resten av koden med rena Kotlin-typer.

fun fromJava(): String? = null

fun main() {
    val name = fromJava() ?: "default"
    // from here on, name is a clean non-null String
    println(name.uppercase())
}

Varför Kotlin tillåter detta

Kotlin skulle kunna tvinga varje Java-värde att vara nullbart, men det skulle göra Java-kompatibiliteten onödigt omständlig.

Plattformstyper är en pragmatisk kompromiss: bekvämlighet kombinerad med möjligheten att vara strikt.

Identifiera plattformstyper

Ni skriver inte String! själva. Den visas bara i IDE-tips och felmeddelanden när ni håller pekaren över värden från Java.

När ni ser ! är det en signal att medvetet bestämma nullbarheten.

Sätta ihop delarna

Plattformstyper överbryggar Java och Kotlin:

  • De har okänd nullbarhet, som visas som Type!
  • Kotlin låter er välja nullbar eller icke-null
  • Utgå från nullbarhet när ni är osäkra för att förbli säkra
  • Annoteringar tar bort gissningarna
fun fromJava(): String? = "safe value"

fun main() {
    val value: String? = fromJava()
    println(value?.uppercase() ?: "missing")
}

Snabbkontroll

Testa er förståelse av plattformstyper.

Sammanfattning

Ni har lärt er hur nullbarhet passerar Java-gränsen:

  • Plattformstyper har okänd nullbarhet
  • Kotlin gör kontrollerna mindre strikta, men ett felaktigt antagande orsakar en NPE vid körning
  • Utgå från nullbarhet och ange standardvärden vid gränsen
  • Java-annoteringar återställer korrekta typer

Därmed är fördjupningen i null-säkerhet klar.

Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
51
Lektioner
203

Vanliga frågor

Är lektionen ”Plattformstyper” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”Plattformstyper”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Plattformstyper”?

Nullbarhet från Java Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?

Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Plattformstyper”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?

Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Nullable- och non-null-typer
  2. Säkra anrop och Elvis
  3. Operatorn !!
  4. Plattformstyper
← Tillbaka till Kotlin Academy