Lze v Kotlinu získat NullPointerException?
sobes.tech AI
Odpověď od AI
Ano, je to možné. Navzdory přísnému systému typů a nullable typům (?) může dojít k NullPointerException v následujících případech:
-
Volání Java kódu bez anotací null-safety: Pokud Java metoda vrací
nulla v Kotlinu je tato metoda volána bez explicitní kontroly nanull, může Kotlin vyvolatNullPointerExceptionpři pokusu o přístup ke členům tohoto objektu. -
Použití operátoru
!!(volání s potvrzením non-null): Tento operátor jasně uvádí, že hodnota nemůže býtnull. Pokud je všaknull, bude vyvolánaNullPointerException.// Příklad použití operátoru "!!" var nullableString: String? = null val nonNullString: String = nullableString!! // Vyvolá NullPointerException -
Neinitializované proměnné
lateinit var: Pokud je proměnná deklarovaná s klíčovým slovemlateinitpoužita před inicializací, bude vyvolánaUninitializedPropertyAccessException, což je podtřídaRuntimeExceptiona svou povahou je podobnáNullPointerException. -
Porušení kontraktu
@NonNullv Java kódu: Pokud Java metoda označená@NonNullve skutečnosti vracínull, při volání z Kotlinu může dojít kNullPointerException. -
Problémy při interoperabilitě s C/C++: Kotlin kód může komunikovat s nativním kódem přes JNI. Chyby v nativním kódu nebo nesprávné zacházení s ukazateli může vést k pádům nebo
NullPointerExceptionv JVM.