美文网首页
Kotlin 常用注解

Kotlin 常用注解

作者: MaybeSix | 来源:发表于2020-04-08 10:15 被阅读0次

    @JvmOverloads

    用于自动重载多个方法
    例如:

    fun f(a: String, b: Int = 0, c: String="abc"){
    }
    

    如果加上该注解

    @JvmOverloads fun f(a: String, b: Int=0, c:String="abc"){
    }
    

    等价于java中声明了以下的方法:

    void f(String a)
    void f(String a, int b)
    void f(String a, int b, String c)
    

    使用比较多的是Android自定义View中构造方法

    class MyLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)
     : FrameLayout(context, attrs, defStyleAttr){
    }
    

    在java中等价于:

    public class MyLayout extends FrameLayout{
    
        public MyLayout(Context context) {
            this(context, null);
        }
    
        public MyLayout(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public MyLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    }
    

    @JvmStatic

    用于让java中调用kotlin的单例中的方法不用写INSTANCE
    例如有以下类和方法:

    object CommonUtils {
        fun printHello() {
            println("Hello world!")
        }
    }
    

    在kotlin和java中调用的代码分别是

    //Kotlin
    CommonUtils.printHello()
    
    //Java
    CommonUtils.INSTANCE.printHello();
    

    如果加上该注解

    object CommonUtils {
        @JvmStatic
        fun printHello() {
            println("Hello world!")
        }
    }
    

    那么在kotlin和java中调用的代码分别是:

    //Kotlin
    CommonUtils.printHello()
    
    //Java
    CommonUtils.printHello();
    

    @CheckResult

    返回值必须要处理,否则编译器会报错,代码规范类注解。

    相关文章

      网友评论

          本文标题:Kotlin 常用注解

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