一、使用
在Kotlin中的幾種聲明方式
object KtTest {
const val a=1
var b: Int=2
@JvmField
var c: Int=3
@JvmStatic
var d:Int=4
}
在Java中的調(diào)用方式
public class JavaTest {
int a=KtTest.a;
int b=KtTest.INSTANCE.getB();
int c=KtTest.c;
int d=KtTest.getD();
}
將Kotlin轉(zhuǎn)換成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;
}
}
二、總結(jié)
1、使用const val修飾的屬性為全局常量,轉(zhuǎn)換為java代碼是public static final修飾的,所以可以直接通過(guò)類名.調(diào)用
2、使用var修飾的屬性轉(zhuǎn)換為java代碼為私有成員屬性,并暴露get、set方法,通過(guò)類的單例對(duì)象調(diào)用方法獲取
3、使用@JvmField修飾的var屬性轉(zhuǎn)換為java代碼是public static修飾的靜態(tài)屬性,所以可以直接通過(guò)類名.調(diào)用
4、使用@JvmStatic修飾的var屬性轉(zhuǎn)換為java代碼是private static修飾的靜態(tài)屬性,可通過(guò)靜態(tài)方法調(diào)用