美文网首页
kotlin注解

kotlin注解

作者: wayne777 | 来源:发表于2021-06-23 16:34 被阅读0次

    @JvmField

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

    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, "<set-?>");
        a = var0;
    }
    
    ---------------------------------------------------------
    
    @JvmField 
    var a: String = ""
    
    编译后:
    @JvmField
    @NotNull
    public static String a = "";
    
    
    @JvmField 
    val a: String = ""
    
    编译后:
    @JvmField
    @NotNull
    public static final String a = "";
    

    @JvmOverloads

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

    例1:简化自定义view的构造函数
    
    class EmptyView : LinearLayout{
    
       @JvmOverloads 
       constructor (context: Context, attrs: AttributeSet? =null,defStyle: Int =0) :
           LinearLayout(context, attrs, defStyle) {
       }
    
    }
    
    编译后:
    public class EmptyView extends LinearLayout {
     
        public EmptyView(Context context) {
            this(context, null);
        }
     
        public EmptyView(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
     
        public EmptyView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
     
    }
    
    例2:
    
       @JvmOverloads 
       fun a(str:String,i:Int=0){}
    
    编译后:
       void a(String str){
           a(str,0)
       }
       void a(String a ,int i){
       }
    

    @JvmStatic

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

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

    @JvmSynthetic

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

    @JvmSuppressWildcards

    用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符

    相关文章

      网友评论

          本文标题:kotlin注解

          本文链接:https://www.haomeiwen.com/subject/edbbyltx.html