一、使用
在Kotlin中的几种声明方式
object KtTest {
const val a=1
var b: Int=2
@JvmField
var c: Int=3
@JvmStatic
var d:Int=4
}
在Java中的调用方式
public class JavaTest {
int a=KtTest.a;
int b=KtTest.INSTANCE.getB();
int c=KtTest.c;
int d=KtTest.getD();
}
将Kotlin转换成Java代码:
public final class KtTest {
public static final int a = 1;
private static int b;
@JvmField
public static int c;
private static int d;
@NotNull
public static final KtTest INSTANCE;
public final int getB() {
return b;
}
public final void setB(int var1) {
b = var1;
}
/** @deprecated */
// $FF: synthetic method
@JvmStatic
public static void getD$annotations() {
}
public static final int getD() {
return d;
}
public static final void setD(int var0) {
d = var0;
}
private KtTest() {
}
static {
KtTest var0 = new KtTest();
INSTANCE = var0;
b = 2;
c = 3;
d = 4;
}
}
二、总结
1、使用const val修饰的属性为全局常量,转换为java代码是public static final修饰的,所以可以直接通过类名.调用
2、使用var修饰的属性转换为java代码为私有成员属性,并暴露get、set方法,通过类的单例对象调用方法获取
3、使用@JvmField修饰的var属性转换为java代码是public static修饰的静态属性,所以可以直接通过类名.调用
4、使用@JvmStatic修饰的var属性转换为java代码是private static修饰的静态属性,可通过静态方法调用