You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin的when表达式中使用isNullOrEmpty这类检查方法

问题描述

和许多其他编程语言一样,Kotlin提供了isNullOrEmpty这类检查方法,可通过类似myString.isNullOrEmpty()的形式简单校验变量。
是否有办法将这类检查与when表达式结合使用?默认情况下when表达式仅支持匹配明确的字符串,是否可以实现如下写法?

when (myString) {
    "1" -> print("1")
    "2" -> print("1")
    myString.isNullOrEmpty() -> print("null or empty") //This is what I am looking for
    else -> print("None of them")
}
解决方案

你写的示例代码默认无法生效,原因是带参数的when表达式分支值需要和参数类型匹配,isNullOrEmpty()返回的是Boolean类型,和String类型的myString不匹配,自然无法触发对应分支。可以通过两种方式实现你的需求:

方案1:使用无参数的when表达式(最灵活,支持任意复杂判断)

无参数的when每个分支都是独立的Boolean判断,完全支持你要的调用isNullOrEmpty()的写法:

when {
    myString == "1" || myString == "2" -> print("1")
    myString.isNullOrEmpty() -> print("null or empty")
    else -> print("None of them")
}

这种写法支持所有自定义判断逻辑,比如后续要加myString.length > 5之类的条件都可以直接添加,扩展性极强。

方案2:带参数的when直接匹配空场景

因为isNullOrEmpty()本质就是判断值为null或者空字符串,你可以直接把这两个值列在分支里,写法更简洁直观:

when (myString) {
    "1", "2" -> print("1")
    null, "" -> print("null or empty")
    else -> print("None of them")
}

这种写法适合简单的固定值匹配场景,代码可读性更好。

内容的提问来源于stack exchange,提问作者Fruchtzwerg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 11:57:02