我怎样才能确定一个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.Stringjava.lang.String之间的kotlin.String在运行时会成功,即使这些是Kotlin类型系统的两个不相关的类型。