我想为可空字符串选择验证函数:
val aString: String? = ...
val validation
// : KFunction1<CharSequence?, Boolean>
= if (...) Objects::isNull else StringUtils::isNotBlank
isNotBlank
来自apache commons。它需要字符串并返回bool。
当我取消注释显式类型声明时,一切都很好。但是当没有声明显式类型时,它会推断出KFunction1<CharSequence, Boolean>
所以参数不能为空。为什么呢?
答案 0 :(得分:0)
这是预期的行为。
::
左侧的类型实际上是您要作为第一个参数传递给引用的实例的类型,因此类型推断将其用作KFunction1
的第一个参数。如果您希望可以在
StringUtils?
个对象上调用引用,请使用StringUtils?::isNotBlank
,但StringUtils::isNotBlank
引用只接受非空StringUtils
个对象。< / p>