我猜测出于兼容性的考虑,变长参数Any*
的类型是Array[Any]
——如果我错了,请纠正我。但是,这并不能解释以下错误:
class Api(api_url: String, params: Seq[(String, String)]) {
def this(api_url: String, params: (String, String)*)
= this(api_url, params.seq)
}
这段代码无法编译,但会显示如下警告:
重复定义:构造函数 Api:(api_url: String, params: (String, String)*)Api 和构造函数 Api:(api_url: String, params: Seq[(String, String)])Api 在第13行被擦除后有相同的类型: (api_url: java.lang.String, params: Seq)Api
那么我应该如何定义一个同时接收可变参数和序列的构造函数呢?
:_*
是真正使得使用序列参数的构造函数调用与可变参数构造函数兼容的关键。更多细节请参考:https://dev59.com/PW025IYBdhLWcg3wW0yx - Johannes Rudolph