如何在Kotlin中习惯性地测试非空,非空字符串?
我是Kotlin的新手,我正在寻找建议,将下面的代码改写成更优雅的方式。
var s: String? = "abc" if (s != null && s.isNotEmpty()) { // Do something }
如果我使用下面的代码:
if (s?.isNotEmpty()) {
编译器会抱怨
Required: Boolean Found: Boolean?
谢谢。
您可以使用isNullOrEmpty
或其朋友isNullOrBlank
像这样:
if(!s.isNullOrEmpty()){ // s is not empty }
CharSequence?
扩展方法都是isNullOrEmpty
和isNullOrBlank
CharSequence?
因此您可以安全地使用它们null
。 或者将null
变成false,如下所示:
if(s?.isNotEmpty() ?: false){ // s is not empty }
虽然我非常喜欢@miensol的答案,但我的答案是(这就是为什么我不把它放在注释中): if (s != null && s.isNotEmpty()) { … }
实际上是惯用的在Kotlin的方式。 只有这样,你会得到一个聪明的演员在String
内的String
,而在接受答案的方式,你将不得不使用s!!
在块内。