我经常想保存一个不能为空或空白的字符串 - 空格不够好。编译器很好地处理字符串?
以防止空值,我们可以使用“不可ullString”是“NullOrBlank”()
来检查它是空的还是空白的。但是,这要求在使用它的所有位置处理空白检查,然后在空白时处理错误,如果错过了某个位置,这可能会导致意外错误。
是否有一种更简单的方法来定义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"
问题内容: 我们的REST API接收一些JSON对象输入,其中某些字段必须不为null。这些可以是String / Integer,甚至可以是其他一些类实例作为参考。 我们正在尝试寻找一种方法来强制这些字段不为null,而不是在API中进行null检查的正确方法。当前: 我们想要的是这样的: 我们尝试了3件事: 1)升级到杰克逊2.0.6并使用注释com.fasterxml.jackson.an
抱歉,我在谷歌搜索中找不到答案...在kotlin中运行bash命令的语法是什么?我想做一个curl命令。那里的留档似乎非常有限,或者我不擅长谷歌搜索?
我们的REST API接收一些JSON对象输入,其中一些字段要求为非空。这些可以是String/Intger,甚至可能是其他一些类实例作为引用。 我们试图找到一种方法来强制这些字段不为null,而不是API中null检查的正确方法。当前: 我们想要的是: 我们尝试了3件事: 1) 升级至jackson 2.0.6并使用annotation com。fasterxml。杰克逊。注释。JsonProp
在java中可以这样做//CHECKSTYLE: OFF这将关闭声纳中的检查样式警告。 此外,您可以更具体地在某一行前面使用@SuppressWarnings(“弃用”)。 我知道如果警告是固定的而不是抑制的会更好。Bot如何在静态编程语言中抑制? 我发现一些博客建议使用@Suppress(“某种类型”),但sonar仍然报告了这个问题。 有什么建议吗?
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
当使用Java和JUnit 5时,我可以使用如下非静态字段注册扩展: 当我尝试使用Kotlin (1.4.10)时,我似乎无法让它工作。我试过举个例子: 但它失败了: 当我试着运行它的时候。 如果我尝试添加一个< code>@JvmField注释: 它失败,而是出现编译时错误: 我能做的是将它移动到一个同伴对象: 现在它可以工作了。但是我不能在伴随对象中声明,因为构造函数的输入()还不可用。我只是