上下文
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 类型?
- 这种转换实际发生在哪里? (如果可能,寻找相关源代码的链接。)
最佳答案
在 Kotlin/JVM 中,kotlin.String
是 mapped types 之一- 一种在运行时用某些现有 JDK 类表示的类型。
因此,kotlin.String
和 java.lang.String
之间的转换在运行时会成功,即使从 Kotlin 类型系统的角度来看它们是两个不相关的类型。
关于java - 如何确定 Kotlin 类型何时映射到 Java 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787176/