Функция orEmpty

Функция orEmpty является функцией-расширением, которая проверяет, является ли коллекция null. Если коллекция не null, функция возвращает её без изменений. Если коллекция null, функция возвращает пустую коллекцию того же типа. Это позволяет избежать проверок на null и обработки исключений NullPointerException.

Импорт

kotlinimport kotlin.collections.orEmpty

Синтаксис

kotlin// Для Array<T>?
fun <T> Array<out T>?.orEmpty(): Array<out T>
kotlin// Для Collection<T>?
fun <T> Collection<T>?.orEmpty(): Collection<T>
kotlin// Для List<T>?
fun <T> List<T>?.orEmpty(): List<T>
kotlin// Для Set<T>?
fun <T> Set<T>?.orEmpty(): Set<T>
kotlin// Для Map<K, V>?
fun <K, V> Map<K, V>?.orEmpty(): Map<K, V>
kotlin// Для Iterable<T>?
fun <T> Iterable<T>?.orEmpty(): Iterable<T>
kotlin// Для Sequence<T>?
fun <T> Sequence<T>?.orEmpty(): Sequence<T>
kotlin// Для String?
fun String?.orEmpty(): String

Пример

Использование с массивом типа Array<String>?:

kotlinval arr: Array<String>? = arrayOf("a", "b", "c")
val res: Array<out String> = arr.orEmpty()
println(res.contentToString())

Результат выполнения кода:

kotlinArray<String> ['a', 'b', 'c']

Пример

Использование с null массивом типа Array<Int>?:

kotlinval arr: Array<Int>? = null
val res: Array<out Int> = arr.orEmpty()
println(res.contentToString())

Результат выполнения кода:

kotlinArray<Int> []

Пример

Использование со списком типа List<String>?:

kotlinval list: List<String>? = listOf("a", "b", "c")
val res: List<String> = list.orEmpty()
println(res)

Результат выполнения кода:

kotlinList<String> [a, b, c]

Пример

Использование с null списком типа List<Int>?:

kotlinval list: List<Int>? = null
val res: List<Int> = list.orEmpty()
println(res)

Результат выполнения кода:

kotlinList<Int> []

Пример

Использование с множеством типа Set<String>?:

kotlinval set: Set<String>? = setOf("a", "b", "c")
val res: Set<String> = set.orEmpty()
println(res)

Результат выполнения кода:

kotlinSet<String> [a, b, c]

Пример

Использование с null множеством типа Set<Int>?:

kotlinval set: Set<Int>? = null
val res: Set<Int> = set.orEmpty()
println(res)

Результат выполнения кода:

kotlinSet<Int> []

Пример

Использование с отображением типа Map<String, Int>?:

kotlinval map: Map<String, Int>? = mapOf("one" to 1, "two" to 2)
val res: Map<String, Int> = map.orEmpty()
println(res)

Результат выполнения кода:

kotlinMap<String, Int> {one=1, two=2}

Пример

Использование с null отображением типа Map<String, Int>?:

kotlinval map: Map<String, Int>? = null
val res: Map<String, Int> = map.orEmpty()
println(res)

Результат выполнения кода:

kotlinMap<String, Int> {}

Пример

Использование со строкой типа String?:

kotlinval str: String? = "abcde"
val res: String = str.orEmpty()
println(res)

Результат выполнения кода:

kotlinString "abcde"

Пример

Использование с null строкой типа String?:

kotlinval str: String? = null
val res: String = str.orEmpty()
println(res)

Результат выполнения кода:

kotlinString ""

Смотрите также

  • функцию isNullOrEmpty,
    которая проверяет, является ли коллекция null или пустой
  • функцию isNotEmpty,
    которая проверяет, что коллекция не пустая и не null
  • функцию ifEmpty,
    которая возвращает альтернативное значение для пустой коллекции