java - 为什么我们写 NextActivity::class.java 虽然这是一个 kotlin 类?

标签 java android kotlin

我们必须用扩展名 .java 编写这一行,虽然它的扩展名是 .kt 我认为 Kotlin 文件转换为 java 文件,但 java 也转换为字节码,所以我们也可以使用 .class 文件如果 Kotlin 代码转换进入java代码。

NextActivity::class.java to NextActivity::class.kt//不起作用

btn?.setOnClickListener {
   startActivity(Intent(this, NextActivity::class.java))
}

所以问题是为什么我们在 NextActivity::class.java

中编写 .java

问题来自 here .

最佳答案

因为你想访问 Java Class 的方法.

我认为它们不是在 Kotlin 中从头开始重新实现的,因此,为了访问它们,您必须将您的 kotlin 类“反射”为 Java 类。

NextActivity::class 返回 KClass 引用并且 KClass 具有 property javaIntent 构造函数签名是 Intent(Context packageContext, Class cls) 所以第二个参数是 Class 类型所以最终的答案是这不是扩展,这只是属性。

关于java - 为什么我们写 NextActivity::class.java 虽然这是一个 kotlin 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45608711/

相关文章:

java - Java HashMap 中的有序列表

java - 如何获取联系人组 ID 或名称?

java - 如何将一个Master上的方法调用交给n个Workers并返回?

android - Gradle 2.2.0 执行失败 : SymbolForDebug

java - JSONRequest 成功后 Android 更新 View

java - 改变 TextInputLayout 提示行为

java - 匹配和完美数学

android - 抽屉布局 subview 重叠

android - 具有未烘焙纹理的 3D 对象在 metaio sdk 中无法正确呈现

arrays - Kotlin 观察数组变化