栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-11 Kotlin中@JvmOverloads 注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-11 Kotlin中@JvmOverloads 注解

Kotlin中@JvmOverloads 注解

在kotlin中声明一个函数,函数中有默认参数值的参数,实际上默认参数值没有起到作用。

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

就其实相当于

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

实际上默认的参数值在方法调用的时候就被覆盖了。

但是如果说在 fun 前面添加了**@JvmOverloads**注解,暴露出多个重载的方法。

@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)

并且此时在没有该值的构造器中,默认值已经是传过来的参数值了,就比如 第一个构造器中没有传入b的值,但是b在默认传参中已经赋值为0了。

注:该注解也可用在构造方法和静态方法。

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

相当于java:

public class MyLayout extends RelativeLayout {
    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);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315321.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号