gpt4 book ai didi

kotlin - 如何在 kotlin 中强制执行空安全注释检查?

转载 作者:行者123 更新时间:2023-12-05 01:51:45 25 4
gpt4 key购买 nike

考虑这个例子:

import java.math.BigDecimal

fun main(args: Array<String>) {
val s: String? = null
BigDecimal(s)
}

它编译时没有任何警告(使用 cli kotlinc 和 IntelliJ)并在运行时抛出:

Exception in thread "main" java.lang.NullPointerException
at java.math.BigDecimal.<init>(BigDecimal.java:809)
...

我尝试根据 docs 以不同的方式构建它像这样:

kotlinc \
-Xnullability-annotations=@javax.annotation:strict \
-Xnullability-annotations=@org.jetbrains.annotations:strict \
-Xjsr305=strict \
Main.kt -d main.jar

注释似乎在那里(如 IntelliJ 中所见):

@NotNull annotation in BigDecimal constructor

文档明确指出:

Java types that have nullability annotations are represented not asplatform types, but as actual nullable or non-null Kotlin types.

我在这里错过了什么?

最佳答案

BigDecimal 构造函数的参数被视为平台类型,因为构造函数实际上并未被注释。

@NotNull 注释由 IDE 通过检查源代码即时计算。如果您按住 Ctrl 键并单击构造函数,您将转到源代码,您会看到其中没有注释。

关于kotlin - 如何在 kotlin 中强制执行空安全注释检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72030988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com