如何将静态变量从Java转换为Kotlin
有三种方法来处理object来自Java 的Kotlin的属性:
使用Foo.INSTANCE。 默认情况下,属性object不会是Java的静态字段,但Java可以通过Foo对象实例访问属性Foo.INSTANCE。 所以表达会Foo.INSTANCE.getC_ID()。
用@JvmStatic注解标记一个属性: object Foo { @JvmStatic val C_ID = “ID” //… } 这将生成静态getterC_ID而不是Foo实例getter,它将被访问为Foo.getC_ID()。
@JvmField在属性声明中使用注释: object Foo { @JvmField val C_ID = “ID” //… } 这将使Kotlin编译器为Java生成静态字段而不是属性。然后在Java中,可以将其作为静态字段来访问:Foo.C_ID。 但它不会在没有后台字段的属性。
java 页面怎么跳 kotlin页面
和正常跳转一样,startActivity(new Intent(A1.this,A2.class));
A1.java
A2.kt
kotlin使用时遇到的问题(一)
一.当创建android项目时,默认是java形式的activity,如果想要使用kotlin,就要将某个activity转换为kotlin形式的。
使当前窗口显示的界面是要转换的界面,点击code–convert Java File to Kotlin File
转换完毕后界面就变成了kotlin形式
二.查看build.gradle中并没有出现kotlin的配置,这时可以运行下项目,然后就会在activity的右上角出现configure,点击configure就可以配置kotlin应用范围和版本了。
选择配置
点击ok 等待自动配置kotlin,配置完毕后根build.gradle下后出现
module下的build.gradle会出现
三.运行时报错 unresolved reference kotlinx
这是因为没有添加kotlin的相关插件
在app的build.gradle下添加
apply plugin: ‘kotlin-android-extensions’
四.因为使用kotlin之后,不需要再写findViewById(),需要用到
而这个包是在kotlin的extensions插件下。
下面java改写成kotlin
修改后:
val schedulersTransformer = object:ObservableTransformer() {
fun apply(upstream:Observable):ObservableSource {
return (upstream as Observable).subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
}