Null Safety

Nullable Types

Definição

Kotlin é uma linguagem considerada null safety, ou seja, visa eliminar os NPEs (NullPointerException). Então como solução foi implementado os Nullable Types que tem como indicar explicitamente se uma variável/propriedade aceita null.

É possível declarar uma variável/propriedade/retorno de função como Nullable Type através do uso do ponto de interrogação (?) após o tipo.

A inferência de tipo não é realizada em valores null.

Exemplo

Atribuição correta de valor null

var month: Int? = null 

Atribuição incorreta de valor null

var day: Int = null

No caso acima, ocorre um erro de compilação, pois a atribuição de null só é permitida em variáveis do tipo Nullable (?).

Null safe calls

Definição

Para realizar chamadas de funções que retornam um Nullable Type de forma segura (Nullable Safe Calls) é utilizado o operador ?.

Geralmente são úteis em chamadas em cadeia, caso uma propriedade for null, a cadeia é interrompida e retorna null.

Também pode ser usado em atribuições de variáveis, ou seja, se uma das propriedades for null a atribuição não é feita.

Exemplo

val linguagem = "Kotlin"
println(linguagem.length) // 6
val linguagem = "Kotlin"
println(linguagem?.substring(0. 2).?length) // 3