如何在Kotlin中验证类字符串属性非空并添加空字符串检查?
解决方案
可以利用Kotlin的空安全特性和字符串扩展函数,简洁实现null值与空字符串的双重校验:
方式一:统一校验(推荐)
用takeIf过滤空字符串,配合?:统一抛出异常,代码最简洁:
var email: String = jwt.claims["email"]?.asString()?.takeIf { it.isNotEmpty() } ?: throw Exception("email为空或不存在")
如果需要同时排除全空白字符(如空格、换行)的情况,把isNotEmpty()替换为isNotBlank()即可。
方式二:区分异常场景
如果需要针对「字段不存在」和「字段为空」抛出不同提示,用let链式处理:
var email: String = jwt.claims["email"]?.asString()?.let { if (it.isNotEmpty()) it else throw Exception("email字段为空") } ?: throw Exception("email字段不存在")
方式三:复用型扩展函数
如果多处需要类似校验,可以封装扩展函数提升复用性:
fun String?.requireValid(message: String = "参数无效"): String { requireNotNull(this) { message } require(this.isNotEmpty()) { message } return this } // 调用示例 var email: String = jwt.claims["email"]?.asString().requireValid("email为空或不存在")
这里用require抛出IllegalArgumentException,更符合参数校验的语义。
内容的提问来源于stack exchange,提问作者Sebi
相关产品推荐
相关产品推荐

