Kotlin学习笔记——注解

@JvmField

指示Kotlin编译器不为该属性生成getter/setter,并将其作为字段公开。如果用来修饰val变量,就和const关键字的功能一样了

@JvmField var a: String = ""

编译后:
@JvmField
@NotNull
public static String a = "";
@JvmField val a: String = ""

编译后:
@JvmField
@NotNull
public static final String a = "";
var a: String = ""

编译后:
@NotNull
private static String a = "";

@NotNull
public static final String getA() {
    return a;
}

public static final void setA(@NotNull String var0) {
    Intrinsics.checkParameterIsNotNull(var0, "");
    a = var0;
}

@JvmOverloads

指示Kotlin编译器为包含默认参数值的函数生成重载。

@JvmOverloads fun a(str: String, int: Int = 0) {}

@JvmStatic

指定从该元素中生成静态方法需要。注意:此注解只能用于被object关键字修饰的类的方法,或者companion object中的方法

object A {
    @JvmStatic fun a() {}
}
class A {
    companion object {
        @JvmStatic fun a() {}
    }
}

@JvmSynthetic

用来注解方法和字段,使得被标记的元素只能在kotlin代码中使用,在java代码中无法使用。

@JvmSuppressWildcards

用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?详情请看第二个坑

你可能感兴趣的:(Android)