Typy platformowe
Wartość null z języka Java
Typy platformowe to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Kotlin spotyka Javę
Kotlin działa na maszynie wirtualnej JVM i stale wywołuje kod Javy. Java nie zna jednak pojęcia typów nullable i non-null.
Jak zatem Kotlin obsługuje wartość pochodzącą z Javy? Za pomocą typów platformowych.
Czym jest typ platformowy
Typ platformowy to typ otrzymany przez Kotlin z Javy, którego nullowalność jest nieznana.
Kotlin zapisuje go jako String! w komunikatach o błędach. Wykrzyknik oznacza: wartość może być równa null albo może nie być równa null, a Kotlin nie wymusi żadnego wyboru.
Łagodniejsze sprawdzanie
W przypadku typów platformowych Kotlin łagodzi sprawdzanie wartości null. Mogą Państwo traktować wartość jako non-null bez błędu kompilatora.
Kompromis polega na tym, że jeśli wartość rzeczywiście wynosi null, w czasie działania programu pojawi się NullPointerException.
To Państwo wybierają typ
Przechowując wartość typu platformowego, decydują Państwo, jak ją typować:
- jako non-null
String→ wygodnie, ale ryzykownie - jako nullable
String?→ bezpiecznie i jednoznacznie
Poniższy przykład w Kotlinie symuluje ten wybór.
fun fromJava(): String? = "value from Java"
fun main() {
val safe: String? = fromJava()
println(safe?.length)
}Ryzykowny wybór
Jeśli założą Państwo, że wartość nie jest równa null, a źródło zwróci null, awaria nastąpi podczas przypisania albo pierwszego użycia wartości.
To ukryte zagrożenie typów platformowych.
fun fromJava(): String? = null
fun main() {
try {
val risky: String = fromJava()!!
println(risky.length)
} catch (e: NullPointerException) {
println("Null came from the Java side")
}
}Adnotacje pomagają
Biblioteki Javy mogą używać adnotacji takich jak @Nullable i @NotNull.
Jeśli są obecne, Kotlin je respektuje i udostępnia prawidłowy typ String? albo String zamiast typu platformowego.
Dobra praktyka: zakładajcie nullable
Podczas wywoływania nieopatrzonego adnotacjami kodu Javy bezpiecznym nawykiem jest traktowanie wyniku jako nullable.
Należy oznaczyć zmienną za pomocą ? i używać bezpiecznych wywołań, tak jak w przypadku każdej wartości nullable w Kotlinie.
fun fromJava(): String? = "data"
fun main() {
val value: String? = fromJava()
val length = value?.length ?: 0
println(length)
}Bezpieczne granice
Granicę z Javą należy traktować jako niezaufaną. Wartości należy sprawdzać lub ustalać dla nich wartości domyślne dokładnie w miejscu, w którym trafiają do kodu Kotlina.
Od tego momentu reszta kodu może działać na poprawnych typach Kotlina.
fun fromJava(): String? = null
fun main() {
val name = fromJava() ?: "default"
// from here on, name is a clean non-null String
println(name.uppercase())
}Dlaczego Kotlin na to pozwala
Kotlin mógłby wymuszać nullable dla każdej wartości pochodzącej z Javy, ale sprawiłoby to, że współdziałanie z Javą byłoby niezwykle rozwlekłe.
Typy platformowe są pragmatycznym kompromisem: zapewniają wygodę, a jednocześnie pozwalają zachować ścisłą kontrolę.
Rozpoznawanie typów platformowych
Nie będą Państwo samodzielnie zapisywać String!. Pojawia się on wyłącznie w podpowiedziach IDE i komunikatach o błędach po wskazaniu wartości pochodzących z Javy.
Widoczny znak ! jest sygnałem, aby świadomie zdecydować o nullowalności.
Zastosowanie w praktyce
Typy platformowe łączą Javę i Kotlina:
- Mają nieznaną nullowalność, oznaczaną jako
Type! - Kotlin pozwala wybrać typ nullable albo non-null
- W razie wątpliwości należy zakładać nullable, aby zachować bezpieczeństwo
- Adnotacje usuwają konieczność zgadywania
fun fromJava(): String? = "safe value"
fun main() {
val value: String? = fromJava()
println(value?.uppercase() ?: "missing")
}Szybkie sprawdzenie
Sprawdźcie Państwo swoją wiedzę na temat typów platformowych.
Podsumowanie
Poznali Państwo sposób, w jaki nullowalność przekracza granicę Javy:
- Typy platformowe mają nieznaną nullowalność
- Kotlin łagodzi sprawdzanie, ale błędne założenie powoduje NPE w czasie działania programu
- Należy zakładać nullable i ustalać wartości domyślne na granicy systemu
- Adnotacje Javy przywracają prawidłowe typy
Na tym kończy się szczegółowe omówienie bezpieczeństwa wartości null.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Typy platformowe” jest bezpłatna?
Tak — pełny tekst „Typy platformowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typy platformowe”?
Wartość null z języka Java Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Typy platformowe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Typy nullable i non-null
- Bezpieczne wywołania i Elvis
- Operator !!
- Typy platformowe