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

标签 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 类型?
  • 这种转换实际发生在哪里? (如果可能,寻找相关源代码的链接。)

最佳答案

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

因此,kotlin.Stringjava.lang.String 之间的转换在运行时会成功,即使从 Kotlin 类型系统的角度来看它们是两个不相关的类型。

关于java - 如何确定 Kotlin 类型何时映射到 Java 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787176/

相关文章:

java - 访问servlet时出现HTTP错误503

android - 应用程序在构建回栈时崩溃

python - Gradle/Kotlin等效于Python的调用

java - WebDriver 在 Android 应用程序的 Selenium 中不可用

java - 使用javassist添加方法参数名称

Java String.split(regex) 不工作

java - JIT 自动内联的方法的大小是多少?

java - 具有差异的 JVM 10 规范?

class - JVM 如何决定一个类 “belongs”(例如内部类或嵌套类)是否属于另一个类?

generics - kotlin 中的高阶(或递归?)泛型类型参数