当前位置: 首页 > news >正文

江苏交通运输厅网站建设制作手机wap网站工具

江苏交通运输厅网站建设,制作手机wap网站工具,网站建设公司968,吉林网站建设企业问题 如果你有一个带有默认参数值的 Kotlin 函数,如何从 Java 调用它而无须为每个参数显式指定值? 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法,这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …

问题

如果你有一个带有默认参数值的 Kotlin 函数,如何从 Java 调用它而无须为每个参数显式指定值?

方案

为函数添加注解@JvmOverloads。

也就是为Java添加重载方法,这样Java调用Kotlin的方法时就不用传递全部的参数了。

示例

在 Kotlin 中定义一个函数,函数指定了多个带默认值的参数,如下:

/*** kotlin中模拟定义一个addUser函数** 参数 name 必需的,age 和 address有默认值, 其中address可空*/
fun addUser(name: String,age: Int = 18,address: String? = null,
) {println("新增User, 信息如下:")println("name is $name, age is $age, address is $address")println("==================================")
}

在 Kotlin 中如果调用这个函数,可以指定一个、两个、三个参数来调用它,如下:

fun main() {// name必传, age 和 address 使用默认值addUser("张三")// address使用默认值addUser("李四", age = 20)// age使用默认值, address可空所以这里可以传递nulladdUser("王五", address = null)// 都不使用默认值addUser("赵六", 30, "北京")
}

执行结果如下:

新增User, 信息如下:
name is 张三, age is 18, address is null
==================================
新增User, 信息如下:
name is 李四, age is 20, address is null
==================================
新增User, 信息如下:
name is 王五, age is 18, address is null
==================================
新增User, 信息如下:
name is 赵六, age is 30, address is 北京
==================================

然而,Java方法不支持默认参数,所以当在Java中调用这个函数时,必须提供所有的参数,如下:

public static void main(String[] args) {// 缺少任何一个参数就会报错// KotlinDemoKt.addUser("java", 100);// 必须传递三个参数KotlinDemoKt.addUser("java", 100, null);
}

打印结果如下:

新增User, 信息如下:
name is java, age is 100, address is null
==================================

在这里插入图片描述
从截图中也可以看出,Java调用的时候,addUser方法需要传递三个参数才行。

如果将注解 @JvmOverloads 添加到函数中,生成的类将支持所有的函数重载。改造如下:
在这里插入图片描述
给 Kotlin 中定义的函数加上注解 @JvmOverloads ,此时再回到 Java 中调用发现:
在这里插入图片描述
此时 Java 中调用 Kotlin 的函数 addUser,就有了三个方法可调用了,这就是注解 @JvmOverloads 的作用,让它看起来就像是 Java 中的重载方法。

同样可以对 Kotlin 中的构造函数做出这样的操作,如下,在 Person 类中生成三个构造方法:
在这里插入图片描述
Kotlin 中的类此时没有添加注解 @JvmOverloads , 所以 Java 创建类对象的时候,还是必须要传递三个参数的初始值。

加上注解之后,如下:
在这里插入图片描述
如上,Java 中实例化类可以使用不同参数完成了。

注意:Kotlin 中的主构造函数,没有注解和修饰符的时候,可以省略关键字 constructor,但因为此时有注解 @JvmOverloads,所以需要加上关键字 constructor。

总结

考虑到Java没有参数默认值的概念,当你从 Java 中调用 Kotlin 函数的时候必须显式地指定所有参数值。

如果需要从 Java 代码中做频繁的调用,而且希望它能对Java的调用者更简便,可以用 @JvmOverloads 注解它。这个指示编译器生成Java重载函数,从最后一个开始省略每个参数

http://www.yayakq.cn/news/931572/

相关文章:

  • 商城网站 搭建wordpress佣金分成
  • 高端网站建设好的公司网站建设开题报告
  • 网站购物流程模块怎么实现培训心得总结
  • 做ppt必备网站洛阳建站公司
  • 青岛做网站的公司有哪些关于网站建设的调查报告
  • 网站建设 微信营销个人博客网站制作教程
  • 旅行社网站方案手机源码网
  • 旅游网站开发系统的er图加强财政门户网站建设工作
  • 沛县微网站开发柒比贰主题wordpress
  • 招商网站建设方案滑坡毕业设计代做网站
  • 合肥学习做网站网站建设推广案例
  • 网站开发流程分为哪三个阶段上海百度推广公司
  • 网站网站优化唐山网站建设方案书
  • 网站怎么才能上线网站开发费
  • 做网站需要备案企业网站的开发背景
  • 国家建设部网站官网证件查询小程序开发定制制作
  • 石家庄做网站公司有哪些特别好的企业网站程序
  • 合肥市建设网官方网站同一个阿里云可以做两个网站
  • 建设局网站漠河怎么做网络广告
  • 电子商务网站建设的基本要求文登住房和城乡建设局网站
  • 手机怎么访问wap网站网上商城平台有哪些
  • 南阳网站排名价格黑河市网站建设公司
  • 合肥网站设计公商标注册申请要多少钱
  • 平凉市建设厅官方网站天津市做网站的公司
  • 阿里网站搭建做房地产要自己开网站
  • 英文网站模板cms房地产公司名称大全
  • 网站空间文件夹十大app软件禁止下载
  • 传奇手游网站大全9377网站建设好做吗
  • 国外h5网站模板下载美食网站开发步骤
  • 超市网站建设广东手机网站开发多少