我正在尝试将我的Java代码转换HomePage.class
为Kotlin.我按照Kotlin.org上的说明操作:
的getClass()
要从对象检索类型信息,我们使用javaClass扩展属性.
val fooClass = foo.javaClass
而不是Java的
Foo.class
使用Foo::class.java
.
val fooClass = Foo::class.java
我有一个名为HomePage的类,它扩展了AppCompatActivity(在Android中).我正在使用Android Studio.我试过了HomePage::class.java
,它有一个错误:Unresolved reference: java
我如何让它工作?
问题很可能是你忘了依赖Kotlin反射功能所需的反射库.
在Java平台上,使用反射功能所需的运行时组件作为单独的JAR文件(kotlin-reflect.jar)分发.这样做是为了减少不使用反射功能的应用程序所需的运行时库大小.如果使用反射,请确保将.jar文件添加到项目的类路径中.
资源
事实证明,我使用的是较旧版本的Kotlin,但配置不正确.我编辑了gradle文件以包含最新的beta版本,并选择了配置Kotlin的选项,现在它可以使用了.
在gradle中:
buildscript { ext.kotlin_version = '1.0.0-beta-3594' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } } ... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" }
我放在Gradle的开头(模块应用程序)
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'
和
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
在依赖项部分
在build.gradle(Project)中
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"