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

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

问题描述:

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

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

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

我不知道很多关于科特林呢,但我们知道,Java是一般*不变*当谈到这一点,赫然如果我正确阅读[本文](https://proandroiddev.com/understanding-generics-and-variance-in-kotlin-714c14564c470),请了解这*应该是可能的。我对这一发现不够信心,并将其列为答案,但这至少会给你带来很大的好处。 – Makoto

是的。 Anymapped 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