Logo
Kotlin Basics
Kotlin BasicsNull Safety and Optionals

Null Safety and Optionals

Understanding null safety and optional types in Kotlin, including how to handle nullable types, perform safe calls, and use the Elvis operator for more robust and error-free code.

Null safety is one of Kotlin's most notable features, designed to eliminate the risk of null reference exceptions, which are common runtime errors in many languages. This section will guide you through Kotlin's approach to null safety and how to work with optional types.

Nullable Types

In Kotlin, types are non-nullable by default. To make a type nullable, you append a ? to its declaration.

Syntax

var variable: Type? = null

Example

var name: String? = null

Safe Calls (?.)

Safe calls are used to safely access properties and methods on nullable objects.

Syntax

nullableVariable?.methodName()

Example

val length = name?.length  // Returns null if name is null

Elvis Operator (?:)

The Elvis operator is used to provide a default value when a nullable expression returns null.

Syntax

val result = nullableExpression ?: defaultValue

Example

val length = name?.length ?: 0  // Returns 0 if name is null

Non-Null Assertion (!!)

This operator converts a nullable type to a non-nullable type, throwing a NullPointerException if the value is null.

Syntax

nullableVariable!!

Example

val length = name!!.length  // Throws NullPointerException if name is null

Safe Casting (as?)

Kotlin provides a safe cast operator as? that returns null if the casting is unsuccessful.

Syntax

val result = expression as? Type

Example

val number: Int? = expression as? Int  // Returns null if expression is not an Int

Summary and Best Practices

  • Use nullable types (Type?) only when you expect a variable to hold a null value.
  • Prefer safe calls (?.) and the Elvis operator (?:) over non-null assertions (!!) to avoid runtime exceptions.
  • Use safe casting (as?) when you're unsure about the type of an expression.

Understanding null safety and optional types in Kotlin is crucial for writing robust and error-free code. This is especially important in Android Native development, where null reference exceptions can lead to app crashes and poor user experience.

Book a conversation with us for personalize training today!

Was this helpful?
Logo