不幸的是,Kotlin没有
assert
关键字及其特殊语义。相反,它具有以下功能:
inline fun assert(value: Boolean, lazyMessage: () -> Any)
您可以看到,作为第一个参数传递的表达式是无条件计算的。这意味着您无法实现与Java中相同的轻量级检查;您必须触发实际的断言失败才能确保。
所以你需要按照
@Zoe
:
try {
assert(false)
throw IllegalStateException("Please enable assertions!")
} catch (e: AssertionError) {
// Things are looking good; carry on
}
如果你坚持
AssertionError
而不是
IllegalStateException
,可以使用布尔变量。
var assertionsAreDisabled = false
try {
assert(false)
assertionsAreDisabled = true
} catch (e: AssertionError) {
// Things are looking good; carry on
}
if (assertionsAreDisabled) {
throw AssertionError("Please enable assertions!")
}