我经常想保存一个不能为空的字符串or blank- 空白不够好。编译器处理String?
很好地防止 null,我们可以使用aNullableString.isNullOrBlank()
检查它是否为空或空白。但是,这要求在使用空白支票的所有地方都对其进行处理,然后在空白支票时处理错误,如果错过某个位置,可能会导致意外错误。
有没有更简单的方法来定义类型或扩展String
这将强制字符串不能为空?
如果您在多个地方需要此行为,您可以创建一个委托来处理它,您可以在私有属性的 setter 中或在setValue
功能:
class NonEmptyString(private var str: String) {
init {
if (str.isEmpty()) {
throw IllegalArgumentException("Invalid initial value")
}
}
operator fun getValue(thisRef: Any?, property: KProperty<*>) = str
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
if (value.isEmpty()) {
return // or throw or something
}
str = value
}
}
它的用法如下:
var nonEmpty by NonEmptyString("something")
nonEmpty = ""
println(nonEmpty) // "something"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)