Функция orEmpty
Функция orEmpty
является функцией-расширением,
которая проверяет, является ли коллекция null.
Если коллекция не null, функция возвращает её без изменений.
Если коллекция null, функция возвращает пустую коллекцию
того же типа. Это позволяет избежать проверок на null
и обработки исключений NullPointerException
.
Импорт
import kotlin.collections.orEmpty
Синтаксис
// Для Array<T>?
fun <T> Array<out T>?.orEmpty(): Array<out T>
// Для Collection<T>?
fun <T> Collection<T>?.orEmpty(): Collection<T>
// Для List<T>?
fun <T> List<T>?.orEmpty(): List<T>
// Для Set<T>?
fun <T> Set<T>?.orEmpty(): Set<T>
// Для Map<K, V>?
fun <K, V> Map<K, V>?.orEmpty(): Map<K, V>
// Для Iterable<T>?
fun <T> Iterable<T>?.orEmpty(): Iterable<T>
// Для Sequence<T>?
fun <T> Sequence<T>?.orEmpty(): Sequence<T>
// Для String?
fun String?.orEmpty(): String
Пример
Использование с массивом типа Array
:
val arr: Array<String>? = arrayOf("a", "b", "c")
val res: Array<out String> = arr.orEmpty()
println(res.contentToString())
Результат выполнения кода:
Array<String> ['a', 'b', 'c']
Пример
Использование с null массивом типа Array
:
val arr: Array<Int>? = null
val res: Array<out Int> = arr.orEmpty()
println(res.contentToString())
Результат выполнения кода:
Array<Int> []
Пример
Использование со списком типа List
:
val list: List<String>? = listOf("a", "b", "c")
val res: List<String> = list.orEmpty()
println(res)
Результат выполнения кода:
List<String> [a, b, c]
Пример
Использование с null списком типа List
:
val list: List<Int>? = null
val res: List<Int> = list.orEmpty()
println(res)
Результат выполнения кода:
List<Int> []
Пример
Использование с множеством типа Set
:
val set: Set<String>? = setOf("a", "b", "c")
val res: Set<String> = set.orEmpty()
println(res)
Результат выполнения кода:
Set<String> [a, b, c]
Пример
Использование с null множеством типа Set
:
val set: Set<Int>? = null
val res: Set<Int> = set.orEmpty()
println(res)
Результат выполнения кода:
Set<Int> []
Пример
Использование с отображением типа Map
:
val map: Map<String, Int>? = mapOf("one" to 1, "two" to 2)
val res: Map<String, Int> = map.orEmpty()
println(res)
Результат выполнения кода:
Map<String, Int> {one=1, two=2}
Пример
Использование с null отображением типа Map
:
val map: Map<String, Int>? = null
val res: Map<String, Int> = map.orEmpty()
println(res)
Результат выполнения кода:
Map<String, Int> {}
Пример
Использование со строкой типа String?
:
val str: String? = "abcde"
val res: String = str.orEmpty()
println(res)
Результат выполнения кода:
String "abcde"
Пример
Использование с null строкой типа String?
:
val str: String? = null
val res: String = str.orEmpty()
println(res)
Результат выполнения кода:
String ""
Смотрите также
-
функцию
isNullOrEmpty
,
которая проверяет, является ли коллекция null или пустой -
функцию
isNotEmpty
,
которая проверяет, что коллекция не пустая и не null -
функцию
ifEmpty
,
которая возвращает альтернативное значение для пустой коллекции