Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Kotlin
Kotlinhard

Interop z Javą — czym są platform types (`String!`) i czemu są ryzykowne?

Tagi
#interop#platform-types#nullability
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Platform type pochodzi z Javy, gdzie nullability jest nieznane, więc Kotlin traktuje go jako „nullable albo non-null” (`String!`). Jeśli potraktujesz go jako non-null, a w runtime będzie null, nadal możesz dostać NPE; lepiej używać adnotacji nullability i bezpiecznej obsługi.

Odpowiedź zaawansowana

Głębiej

Platform types (`T!`) pojawiają się, gdy Kotlin woła kod Javy bez metadanych nullability. Kotlin nie wie, czy wartość może być nullem, więc pozwala traktować ją jak `T` albo `T?` — na Twoje ryzyko.

Czemu to ryzykowne

Jeśli potraktujesz to jako non-null, a Java zwróci null, nadal możesz dostać NPE.

Jak ograniczać ryzyko

  • Dodaj/włącz adnotacje nullability w Javie (`@Nullable`, `@NotNull`) i ustaw tryb restrykcyjności.
  • W Kotlinie obsłuż granice defensywnie (safe call, `requireNotNull`, jawne `T?`).

Typowe pułapki

  • Przenoszenie platform types głęboko w kod Kotlin (niespodziewane NPE).
  • Zakładanie, że kompilator Kotlina Cię w pełni ochroni (nie da się bez metadanych).

Powiązane pytania

Kotlin
Companion object vs top-level: kiedy użyć którego?
#kotlin#companion#top-level