【问题标题】:Do Kotlin classes that inherit from Java classes also inherit from Any?继承自 Java 类的 Kotlin 类是否也继承自 Any?
【发布时间】:2017-08-08 17:09:09
【问题描述】:

继承自 Java 类的 Kotlin 类是否也继承自 Any?

如果我们有一个 Java 类 Foo 和一个继承自 Foo 的 Kotlin 类 Bar,并且我们试图在 Kotlin 的 MutableList 中使用它,那么下面的方法应该有效吗?

class Class(items: MutableList<Bar> = mutableListOf()) {
    var items: MutableList<Any> = items
}

【问题讨论】:

  • 我对 Kotlin 知之甚少,但知道 Java 在这方面一般不变,得知这应该感到震惊有可能,如果我正确阅读this article。我对这个发现没有足够的信心将其列为答案,但这至少会给你一个很好的线索。

标签: inheritance kotlin


【解决方案1】:

是的。 Any 是一个 mapped type,对应于 java.lang.Object(它是所有 Java 类的超类型),因此,基本上,每个 Java 类在 Kotlin 中都被视为 Any 的子类型。只要something 不为空,something is Any 检查对于 Kotlin 和 Java 类型始终为真。

其实Any在JVM平台上java.lang.Object代表

println(Any::class.qualifiedName) // kotlin.Any
println(Any::class.jvmName)       // java.lang.Object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2011-08-28
    相关资源
    最近更新 更多