我已经创建了样本类来测试Kotlin中的断言
class Assertion {
fun sum(a: Int, b: Int): Int {
assert(a > 0 && b > 0)
return a + b
}
}
fun main(args: Array<String>) {
Assertion().sum(-1, 2)
}
Run Code Online (Sandbox Code Playgroud)
并使用以下选项,但该程序不会抛出断言异常.
-ea:AssertionKt
,-ea:Assertion
和-ea:...
要在Kotlin中启用断言,请使用该-ea
选项运行JVM ,而不使用任何其他说明符.
在 中Kotlin
,与 不同的是Java
,断言只能在顶层启用/禁用,即通过指定-ea
JVM 选项。
在 Kotlin 中,幕后assert()
是一个在文件中定义的函数AssertionsJVM.kt
。ENABLED
对象中的变量_Assertions
用于确定是否启用断言。
@PublishedApi
internal object _Assertions {
@JvmField @PublishedApi
internal val ENABLED: Boolean = javaClass.desiredAssertionStatus()
}
Run Code Online (Sandbox Code Playgroud)
如果为该类启用了断言,则ENABLED
将该变量分配给该变量。true
_Assertions
因此,要在 Kotlin 中打开断言,必须在 JVM 中启用它们
-ea
-ea:kotlin._Assertions
归档时间: |
|
查看次数: |
1452 次 |
最近记录: |