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
Kotlineasy

Null-safety w Kotlinie — co oznaczają `?`, `?.`, `?:` i `!!`?

Tagi
#null-safety#elvis#nullable
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

`T?` to typ nullable, `?.` to bezpieczne wywołanie, `?:` (Elvis) daje wartość domyślną, a `!!` wymusza non-null (rzuca wyjątek, jeśli jest null).

val name: String? = null
val len = name?.length ?: 0
// val crash = name!!.length // throws if name is null

Odpowiedź zaawansowana

Głębiej

Kotlin koduje nullowalność w systemie typów.

  • `T?`: wartość może być nullem.
  • `?.`: safe call (zwraca null zamiast rzucać).
  • `?:`: Elvis (fallback, gdy lewa strona jest null).
  • `!!`: wymuszenie non-null (rzuca NPE, jeśli null) — to ostateczność.

Praktyczne wzorce

  • Safe call + Elvis:
val len = name?.length ?: 0
  • `let`, gdy chcesz wykonać kod tylko dla non-null:
name?.let { println(it.length) }
  • `requireNotNull`/`checkNotNull`, gdy null to błąd programistyczny.

Typowe pułapki

  • Nadmiar `!!` (wracasz do NPE).
  • Założenie, że smart cast zawsze zadziała (zależy od mutowalności i widoczności).

Powiązane pytania

Kotlin
`lateinit` vs nullable: kiedy wybrać `lateinit`?
#kotlin#lateinit#null-safety
Kotlin
Smart cast w Kotlinie: kiedy działa, a kiedy nie?
#kotlin#smart-cast#type-safety
Kotlin
Co to jest `lateinit` i kiedy możesz go użyć?
#lateinit#null-safety
#properties
Kotlin
Wyjaśnij bezpieczeństwo null w Kotlinie.
#null-safety#nullable#elvis-operator