美文网首页
Kotlin的@JvmOverloads的小技巧

Kotlin的@JvmOverloads的小技巧

作者: 钉某人 | 来源:发表于2017-10-24 10:53 被阅读0次

@JvmOverloads这个注解是用来做什么的呢?

@JvmOverloads注解的作用:在有默认参数值的方法中使用,Kotlin会暴露多个重载方法。

在Kotlin中如下所写:

class TestView : View{

    @JvmOverloads
    constructor(context: Context,attributeSet: AttributeSet? = null,defStyleAttr: Int = 0): super(context,attributeSet,defStyleAttr){
        
    }
}

在java中的表现如下:

public class TestView extends View {
    public TestView(Context context) {
        super(context);
    }

    public TestView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public TestView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

}

使用了这个注解相当于声明了三个构造函数呢,是不是很方便?

再来一个栗子:

fun main(args: Array<String>) {
   Demo.foo()
   Demo.foo("a")
   Demo.foo("aa",1)
   Demo.foo("aaa",1,"cc")

}
class Demo{
   companion object {
      @JvmOverloads fun foo(a: String = "a",b: Int = 0,c: String = "c"){
         println(a)
         println(b)
         println(c)
      }

   }
}

相关文章

网友评论

      本文标题:Kotlin的@JvmOverloads的小技巧

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