Alustatyypit
Java-peräiset nullability-tyypit
Alustatyypit on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Kotlin kohtaa Javan
Kotlin toimii JVM:llä ja kutsuu jatkuvasti Java-koodia. Javassa ei kuitenkaan ole käsitettä nullable- ja ei-null-tyypeille.
Miten Kotlin siis käsittelee Javasta tulevaa arvoa? Platform-tyyppien avulla.
Mikä on platform-tyyppi
Platform-tyyppi on Javalta saatu tyyppi, jonka nullability on tuntematon.
Kotlin kirjoittaa sen virheilmoituksissa muodossa String!. Huutomerkki tarkoittaa, että arvo voi olla null tai ei-null, eikä Kotlin pakota valitsemaan kumpaakaan.
Väljempi tarkistus
Platform-tyyppien kohdalla Kotlin höllentää null-tarkistuksiaan. Voitte käsitellä arvoa ei-null-arvona ilman kääntäjän virheilmoitusta.
Kääntöpuolena on, että jos arvo onkin null, saatte ajonaikaisen NullPointerException-poikkeuksen.
Te valitsette tyypin
Kun tallennatte platform-tyyppisen arvon, päätätte itse, miten se tyypitetään:
- ei-null-tyyppinä
String→ kätevää mutta riskialtista - nullable-tyyppinä
String?→ turvallista ja selkeää
Tämä Kotlin-esimerkki jäljittelee kyseistä valintaa.
fun fromJava(): String? = "value from Java"
fun main() {
val safe: String? = fromJava()
println(safe?.length)
}Riskialtis valinta
Jos oletatte arvon olevan ei-null ja lähde palauttaa null-arvon, koodi kaatuu sijoituksen tai ensimmäisen käyttökerran kohdalla.
Tämä on platform-tyyppien piilevä vaara.
fun fromJava(): String? = null
fun main() {
try {
val risky: String = fromJava()!!
println(risky.length)
} catch (e: NullPointerException) {
println("Null came from the Java side")
}
}Annotaatiot auttavat
Java-kirjastot voivat käyttää annotaatioita, kuten @Nullable ja @NotNull.
Kun annotaatiot ovat käytössä, Kotlin huomioi ne ja antaa platform-tyypin sijaan asianmukaisen String?- tai String-tyypin.
Hyvä käytäntö: olettakaa nullable
Kun kutsutte Java-koodia, jossa ei ole annotaatioita, turvallinen tapa on käsitellä tulosta nullablenä.
Tyypittäkää muuttujanne ?-merkillä ja käyttäkää turvallisia kutsuja aivan kuten minkä tahansa Kotlinin nullablen kanssa.
fun fromJava(): String? = "data"
fun main() {
val value: String? = fromJava()
val length = value?.length ?: 0
println(length)
}Suojaavat rajat
Käsitelkää Java-rajaa epäluotettavana. Vahvistakaa arvot tai antakaa niille oletusarvot heti, kun ne saapuvat Kotlin-koodiin.
Sen jälkeen muu koodinne voi käyttää selkeitä Kotlin-tyyppejä.
fun fromJava(): String? = null
fun main() {
val name = fromJava() ?: "default"
// from here on, name is a clean non-null String
println(name.uppercase())
}Miksi Kotlin sallii tämän
Kotlin voisi pakottaa jokaisen Java-arvon nullableksi, mutta se tekisi Java-yhteentoimivuudesta tuskallisen monisanaista.
Platform-tyypit ovat käytännöllinen kompromissi: ne tarjoavat helppoutta ja mahdollisuuden tiukkaan tyypitykseen.
Platform-tyyppien tunnistaminen
Ette kirjoita itse String!-tyyppiä. Se näkyy vain IDE:n vihjeissä ja virheilmoituksissa, kun tarkastelette Java-lähteistä peräisin olevia arvoja.
Kun näette !-merkin, päättäkää nullability tarkoituksella.
Kootaan kokonaisuus
Platform-tyypit yhdistävät Javan ja Kotlinin:
- Niiden nullability on tuntematon, ja ne esitetään muodossa
Type! - Kotlin antaa teidän valita nullablen tai ei-null-tyypin
- Olettakaa arvo nullableksi, jos olette epävarmoja, jotta pysytte turvassa
- Annotaatiot poistavat arvailun tarpeen
fun fromJava(): String? = "safe value"
fun main() {
val value: String? = fromJava()
println(value?.uppercase() ?: "missing")
}Pikatesti
Testatkaa, miten hyvin ymmärrätte platform-tyypit.
Kertaus
Olette oppineet, miten nullability ylittää Java-rajan:
- Platform-tyyppien nullability on tuntematon
- Kotlin höllentää tarkistuksia, mutta väärä oletus aiheuttaa ajonaikaisen NPE:n
- Olettakaa arvot nullableiksi ja antakaa niille oletusarvot rajalla
- Java-annotaatiot palauttavat asianmukaiset tyypit
Tähän päättyy null-turvallisuuden perusteellinen tarkastelu.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Alustatyypit” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Alustatyypit”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Alustatyypit”?
Java-peräiset nullability-tyypit Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Alustatyypit”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?
Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.