可变参数展开操作符
1、Java方法传递多个参数
使用Java定义的方法如果需要传递多个参数,可以用数组 [] :
public void requestPermissionWithArray(String[] permission) {
}
或者 ... 传递多个参数
public void requestPermissions(String... permission) {
}
此时如果用数组作为参数:
String[] strs = {"quibbler", "potter"};
前面两个方法都可以调用接受这个数组类型的参数:
requestPermissionWithArray(strs);
requestPermissions(strs);
2、Kotlin方法传递多个参数
Kotlin中也有支持多个参数的方法定义,用Kotlin重新实现上面两个方法:
使用Array<*>替代Java中的 [] 数组:
fun requestPermissionWithArray(strs: Array<String>) {
}
使用vararg表示可变长参数,替代Java中的 ...
fun requestPermissions(vararg strs: String) {
}
此时,Kotlin中定义的数组
val strs = arrayOf("quibbler", "potter")
只能传递给第一个接受数组作为参数的方法:
requestPermissionWithArray(strs)
而不会像Java那样自动解开数组参数,需要用到可变参数展开操作符 * 解包数组:
requestPermissions(*strs)
精彩的人生需要浪漫、无畏和勇气。