gpt4 book ai didi

reflection - 如何获得Any类(class)? Kotlin中的变量?

转载 作者:行者123 更新时间:2023-12-02 13:14:20 25 4
gpt4 key购买 nike

我也想让equals也比较类,所以我写了

    override fun equals(other: Any?): Boolean {
return this::class == other::class && ...

}

不幸的是它发誓
Expression in a class literal has a nullable type 'Any?', use !! to make the type non-nullable

但我也想与 null进行比较。那光荣的“零安全”呢?他们忘了反射(reflection)吗?我没有找到 ?::运算符或其他东西。

最佳答案

考虑一下。实际上,StringString?之间的类没有区别,只是类型有所不同。您不能在可为null的类型上调用该运算符,因为它可能意味着您在null上调用它,这会导致NullPointerException:

val x: String? = null
x!!::class //throws NPE

在作用域函数 let的帮助下,您可以确保它不是 null并使用 class literal syntax:
return other?.let { this::class == other::class } ?: false

Elvis operator ?:用于通过使表达式 null(不相等)来处理 false情况。

关于reflection - 如何获得Any类(class)? Kotlin中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551353/

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