当前位置: 首页 > 知识库问答 >
问题:

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

司徒博容
2023-03-14

我们必须用分机写这行。java,尽管它的扩展是。kt我认为Kotlin文件会转换成java文件,但是java也会转换成字节码,所以我们也可以使用。类文件,如果Kotlin代码转换为java代码。

NextActive::class.javaNextActive::class.kt//不工作

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

所以问题是我们为什么要写这个。java在nextractivity::类中。java

问题由此产生。

共有2个答案

何涵衍
2023-03-14

您正在从静态编程语言调用Java代码。意图是Java类在Android。

文件:https://kotlinlang.org/docs/reference/reflection.html#class-参考资料

请注意,静态编程语言类引用与Java类引用不同。若要获取Java类引用,请在KClass实例上使用. java属性。

您不能将Kotlin类引用传递给Java(在您的例子中是意图),因此必须传递Java类引用。

来自Interop医生:https://kotlinlang.org/docs/reference/java-interop.html#java-reflection

Java反射适用于Kotlin类,反之亦然。如上所述,您可以使用instance::class。java,ClassName::class。java或实例。javaClass通过Java进入Java反射。朗朗,上课。

罗乐意
2023-03-14

因为您想要访问Java类的方法。

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

NextActive::class返回KClass引用,并且KClass具有属性javaIntent配置器签名是Intent(Context PackageContext, Class cls)所以第二个参数Classtype,所以最后的答案是这不是扩展,这只是属性。

 类似资料:
  • 在f2中,我们有指针 改为func f2(arg int)(int,*error)?或者,在这种情况下,为什么我们返回指针而不是值?

  • 本文向大家介绍python中 这两个参数是什么意思:*args,**kwargs?我们为什么使用它们?相关面试题,主要包含被问及python中 这两个参数是什么意思:*args,**kwargs?我们为什么使用它们?时的应答技巧和注意事项,需要的朋友参考一下 如果我们不确定要往一个函数中传入多少参数,或者我们希望以元祖或者列表的形式传参数时,我们可以使用*args。如果我们不知道要往函数中传递多少

  • 我看到一些代码,其中有人决定复制一个对象,然后将其移动到类的数据成员。这让我感到困惑,因为我认为搬家的目的就是为了避免抄袭。以下是一个例子: 以下是我的问题: 为什么我们不把右值引用到 拷贝不是很贵吗,特别是考虑到像 是什么原因让作者决定复制然后移动 我应该什么时候自己做

  • 我正在学习Python,并有一些困难理解虽然循环。我试图计算负数的总数,但无法正确计算。 这是我计算正数之和的代码(工作正常)

  • 本文向大家介绍为什么我们需要一个数据库,包括了为什么我们需要一个数据库的使用技巧和注意事项,需要的朋友参考一下 数据库是数据的集合,通常以电子形式存储。数据库的设计通常是为了使其易于存储和访问信息。 好的数据库对任何公司或组织都至关重要。这是因为数据库存储了有关公司的所有相关详细信息,例如员工记录,交易记录,工资详细信息等。 数据库重要的各种原因是- 管理大量数据 数据库每天存储和管理大量数据。使

  • 我有一个类,并且我只重写方法。请在java类下面找到 我创建了两个对象,并且这两个对象的所有属性值都相同,并将它们放在中。下面是代码 我得到了预期的结果。由于我只重写了hashCode()方法,并且这两个对象的哈希值是相同的,所以它们存储在HashMap表数组的相同索引位置。下面是调试模式下的预期结果。 但是,如果我没有重写hashCode()方法,而是重写equals()方法,则它们将存储在Ha