我怎样才能确定一个Kotlin类型将被映射到一个Java类型?
上下文
Kotlin的kotlin.String
类型目前定义如下(1.1.2) :
public class String : Comparable<String>, CharSequence { companion object {} // Operator and override function definitions. }
在kotlin.String
定义的一些扩展将接收实例转换为java.lang.String
类型以转发方法调用。 例如(1.1.2) :
@kotlin.internal.InlineOnly public inline fun String.toLowerCase(): String = (this as java.lang.String).toLowerCase()
然而, kotlin.String
类型定义中没有任何东西可以让我清楚,这个转换是保证成功的。
问题
- 有什么方法可以轻松确定是否有任何给定的Kotlin类型以这种方式映射到相应的Java类型?
- 这个转换实际发生在哪里? (如果可能,请查找相关源代码的链接。)
在Kotlin / JVM中kotlin.String
是映射类型之一 – 在运行时用一些现有的JDK类表示的类型。
因此, kotlin.String
和java.lang.String
之间的kotlin.String
在运行时会成功,即使这些是Kotlin类型系统的两个不相关的类型。