Kotlini platvormitüüp

Joel Edenberg

Javas võivad kõik muutujad lisaks defineeritud tüübile ka viidata null ehk tühjale väärtusele. Kuna aga Kotlinis käsitletakse null'itavad tüübidefinitsioone eraldi (need märgistatakse ? sümboliga), siis oleks Kotlinist Java objektide kasutamine väga tüütu - alati tuleks koodis kasutada kas operaatorit ?. või !!. See aga muudaks Java koodi kasutamise väga kohmakaks just nendes osades, kus on teada, et null vastusena tagasi tulla ei saa. Ehk siis suur osa abiastavaid teeke näiteks sõnetöötlusel.

Lahendusena on Kotlinis olemas tüübidefinitisoon, mille lõppu kirjutatakse ! ja mida nimetatakse "platvormitüübiks". Sellist tüüpi ei ole võimalik ise defineerida ja see tüüp määratakse ainult Javast pärinevatele objektidele, millel puudub annotatsioon, mis võimaldaks tuvastada, kas null väärtused on lubatud või mitte. Platvormitüüp tähendab, et Kotlini jaoks võib objektitüüp olla nii null'itav kui ka mitte null'itav - täpne tüüp on teadmata. Seega ei kohusta Kotlin kasutama ?. ega !! operaatoreid, et muutujate väärtuseid küsida. Kaob küll ohutu null käsitlemise eelis, aga kood on paremini loetav. See tähendab, et kompileerimise sammus ei tuvastata enam null viitamise vigu ning vead tekkivad tarkvara jooksutamisel - sarnaselt Java'le. Soovi korral on siiski võimalik ka kompilaatorile täpne tüüp ikkagi öelda.

Ametlik dokumentatsioon
- https://kotlinlang.org/docs/java-interop.html#null-safety-and-platform-types