0Pricing
Android Academy · Lekcja

Bezpieczeństwo wartości null

Proszę poznać system bezpieczeństwa wartości null w Kotlinie: typy nullable, operator bezpiecznego wywołania, operator Elvis oraz sposoby eliminowania wyjątków NullPointerException.

Bezpieczeństwo wartości null to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 1 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 Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Błąd wart miliardy dolarów

W Javie każda zmienna może mieć wartość null, co podczas działania programu może spowodować NullPointerException (NPE) — jeden z najczęstszych powodów awarii aplikacji na Androida.

Tony Hoare, twórca wartości null, nazwał ją swoim błędem wartym miliardy dolarów.

Kotlin eliminuje NPE już podczas kompilacji dzięki systemowi bezpieczeństwa wartości null.

Typy dopuszczające null i niedopuszczające null

W Kotlinie typy są domyślnie niedopuszczające wartości null. Aby zezwolić na null, dodaj ? do typu:

  • String — nigdy nie ma wartości null, gwarantowane
  • String? — może mieć wartość null

Kompilator tego pilnuje — nie pozwoli przypisać null do typu niedopuszczającego wartości null.

Przykład typów dopuszczających null

Kompilator wykrywa błędy związane z null, zanim aplikacja zostanie uruchomiona:

fun main() {
    val name: String = "Alice"   // never null
    // name = null  // COMPILE ERROR

    var nickname: String? = "Al"  // nullable
    nickname = null               // OK

    println(name)
    println(nickname)  // null
}

Operator bezpiecznego wywołania ?.

Operator bezpiecznego wywołania ?. wywołuje metodę tylko wtedy, gdy obiekt nie ma wartości null. Jeśli ma wartość null, zwraca null zamiast powodować awarię.

nickname?.length → zwraca długość albo null, jeśli nickname ma wartość null.

Bezpieczne wywołania w działaniu

Używaj ?., aby bezpiecznie uzyskiwać dostęp do właściwości dopuszczających null:

fun main() {
    var text: String? = "Hello"
    println(text?.length)   // 5
    println(text?.uppercase()) // HELLO

    text = null
    println(text?.length)   // null (no crash!)
    println(text?.uppercase()) // null
}

Operator Elvis ?:

Operator Elvis ?: zapewnia wartość domyślną, gdy wyrażenie ma wartość null:

val len = text?.length ?: 0

Można to odczytać tak: „długość text albo 0, jeśli text ma wartość null”.

Nazwa pochodzi od emoji Elvisa 🕺, którego fryzura przypomina ?:.

Przykład operatora Elvis

Zapewniaj bezpieczne wartości domyślne za pomocą ?::

fun main() {
    var name: String? = "Bob"
    println(name?.length ?: 0)  // 3

    name = null
    println(name?.length ?: 0)  // 0

    val display = name ?: "Anonymous"
    println(display)  // Anonymous
}

Sprawdzanie null za pomocą if

W bloku if (x != null) Kotlin automatycznie wykonuje smart cast typu dopuszczającego null na typ niedopuszczający null — wewnątrz bloku nie trzeba używać ?..

Przykład smart cast

Po sprawdzeniu null Kotlin zawęża typ:

fun printLength(text: String?) {
    if (text != null) {
        // 'text' is now String (non-nullable) here
        println("Length: ${text.length}") // no ?. needed
    } else {
        println("text is null")
    }
}

fun main() {
    printLength("Kotlin")  // Length: 6
    printLength(null)       // text is null
}

Szybkie sprawdzenie

Do jakiej wartości oblicza się null?.length ?: -1?

Podsumowanie: bezpieczeństwo wartości null

System bezpieczeństwa wartości null w Kotlinie eliminuje NPE:

  • Typy są domyślnie niedopuszczające wartości null; dodaj ?, aby zezwolić na null
  • ?. — bezpieczne wywołanie, zwraca null zamiast powodować awarię
  • ?: — operator Elvis, zapewnia wartość domyślną dla null
  • Smart casty wewnątrz bloków if (x != null)

Dalej: porządkowanie kodu za pomocą klas i obiektów.

Często zadawane pytania

Czy lekcja „Bezpieczeństwo wartości null” jest bezpłatna?

Tak — pełny tekst „Bezpieczeństwo wartości null” 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 Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Bezpieczeństwo wartości null”?

Proszę poznać system bezpieczeństwa wartości null w Kotlinie: typy nullable, operator bezpiecznego wywołania, operator Elvis oraz sposoby eliminowania wyjątków NullPointerException. Ćwiczysz Android 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ąć Android Academy?

Nie wymagamy żadnego doświadczenia. Android 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 1 z 4.

Ile czasu zajmuje lekcja „Bezpieczeństwo wartości null”?

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 Android Academy?

Tak. Każda lekcja Android 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

  1. Bezpieczeństwo wartości null
  2. Klasy i obiekty
  3. Klasy danych i klasy zapieczętowane
  4. Funkcje rozszerzające i funkcje wyższego rzędu
← Powrót do Android Academy