Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数

📅 2026/6/27 9:49:34
Kotlin 开发 - orEmpty 函数、ifEmpty 函数、ifBlank 函数、takeIf 函数
orEmpty 函数1、基本介绍orEmpty 函数是一个用于处理可空对象的扩展函数当对象为 null 时它会返回一个对应类型的空实例字符串String?当为 null 时返回空字符串返回类型为Stringkotlin.internal.InlineOnlypublicinlinefunString?.orEmpty():Stringthis?:列表ListT?当为 null 时返回空列表[]返回类型为ListTkotlin.internal.InlineOnlypublicinlinefunTListT?.orEmpty():ListTthis?:emptyList()集合SetT?当为 null 时返回空集合[]返回类型为SetTkotlin.internal.InlineOnlypublicinlinefunTSetT?.orEmpty():SetTthis?:emptySet()映射MapK, V?当为 null 时返回空映射{}返回类型为MapK, Vkotlin.internal.InlineOnlypublicinlinefunK,VMapK,V?.orEmpty():MapK,Vthis?:emptyMap()数组ArrayT?当为 null 时返回空数组[]返回类型为ArrayTpublicactualinlinefunreifiedTArrayoutT?.orEmpty():ArrayoutTthis?:emptyArrayT()2、基本使用字符串String?vals:String?nullprintln(s.orEmpty())println(s.orEmpty().length)# 输出结果 0列表ListT?vallist:ListInt?nullprintln(list.orEmpty())println(list.orEmpty().size)# 输出结果 [] 0集合SetT?valset:SetString?nullprintln(set.orEmpty())println(set.orEmpty().size)# 输出结果 [] 0映射MapK, V?valmap:MapInt,String?nullprintln(map.orEmpty())println(map.orEmpty().size)# 输出结果 {} 0数组ArrayT?valarr:ArrayInt?nullprintln(arr.orEmpty().contentToString())println(arr.orEmpty().size)# 输出结果 [] 0ifEmpty 函数、ifBlank 函数、takeIf 函数valhandleContentif(etHandleContent.text.toString().isEmpty()){null}else{etHandleContent.text.toString()}valhandleContentif(etHandleContent.text.toString().isBlank()){null}else{etHandleContent.text.toString()}这个 Kotlin 代码在功能上完全等同于 Java 的三元运算符StringhandleContentetHandleContent.getText().toString().isEmpty()?null:etHandleContent.getText().toString();StringhandleContentetHandleContent.getText().toString().isBlank()?null:etHandleContent.getText().toString();代码还可以更简洁如果为空字符串则返回 nullvalhandleContentetHandleContent.text.toString().ifEmpty{null}valhandleContentetHandleContent.text.toString().ifBlank{null}也可以使用 takeIf 函数如果满足条件则返回自身否则返回 nullval handleContent etHandleContent.text.toString().takeIf { it.isNotEmpty() } val handleContent etHandleContent.text.toString().takeIf { it.isNotBlank() }