gpt4 book ai didi

kotlin - Kotlin- bool 值如何?如果表达式对字节码有效

转载 作者:行者123 更新时间:2023-12-02 13:09:19 27 4
gpt4 key购买 nike

我知道在Kotlin中使用可空 bool(boolean) 值的惯用法是:

fun nullableBoolean(b: Boolean?) {
if (b == true) {
println("is true")
}
}

我很好奇引擎盖下会发生什么。这是此函数生成的字节码中有趣的部分:
public final static nullableBoolean(Ljava/lang/Boolean;)V
@Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 0
L0
LINENUMBER 4 L0
ALOAD 0
ICONST_1
INVOKESTATIC java/lang/Boolean.valueOf (Z)Ljava/lang/Boolean;
INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual (Ljava/lang/Object;Ljava/lang/Object;)Z
IFEQ L1
...

我可以看到 Intrinsics.areEqual进行了空检查。但是我不明白当引用是 java/lang/Boolean.valueOf时调用 null会发生什么

最佳答案

为了创建一个装箱的 bool(boolean) 对象,将在常量Boolean.valueOf上调用true。然后将其与传递给函数的函数进行比较。

关于kotlin - Kotlin- bool 值如何?如果表达式对字节码有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775730/

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