如何确定何时将Kotlin类型映射到Java类型?

时间:2017-06-27 18:13:51

标签: java jvm kotlin

上下文

Kotlin的kotlin.String类型为currently defined as follows (1.1.2)

public class String : Comparable<String>, CharSequence {
    companion object {}

    // Operator and override function definitions.
}

kotlin.String上定义的某些扩展将接收实例强制转换为java.lang.String类型以转发方法调用。 For example (1.1.2)

@kotlin.internal.InlineOnly
public inline fun String.toLowerCase(): String = (this as java.lang.String).toLowerCase()

但是,kotlin.String类型定义中没有任何内容可以让我清楚地知道此演员阵容可以保证成功。

问题

  • 有没有办法轻易确定任何给定的Kotlin类型是否以这种方式映射到相应的Java类型?
  • 这种转换实际发生在哪里? (如果可能,寻找相关源代码的链接。)

1 个答案:

答案 0 :(得分:3)

在Kotlin / JVM中kotlin.Stringmapped types之一 - 在运行时用一些现有JDK类表示的类型。

因此,kotlin.Stringjava.lang.String之间的强制转换在运行时成功,即使这些是Kotlin类型系统中的两个不相关的类型。