在 Kotlin 中,如果我们将一些 Kotlin 字节码反编译为 Java,我们经常可以看到这样的语句,它会进行 null 检查:
Intrinsics.checkParameterIsNotNull(foo, "foo")
如果我们进一步探索,我们可以看到这个方法的反编译实现,它的实现和它的名字完全一样:
public static void checkParameterIsNotNull(Object value, String paramName) {
if (value == null) {
throwParameterIsNullException(paramName);
}
}
由于这个Intrinsics
类Intrinsics.checkParameterIsNotNull
(
既然这个方法的实现很短(而且经常出现),为什么不内联这个函数呢?
是否有一些注释可以让我们阻止 Kotlin 编译器生成这个空检查?(也许像@TrustedNotNull
)
对于 ProGuard:我很担心,因为我正在处理共享库,而 ProGuard 在这种情况下不适合我。我显然知道那些代码消除工具(ProGuard、dce-js),并且我知道如何以及何时使用它们。
我只是问为什么没有内联函数。