我有一个案例类,以 Seq[T] 作为参数:
case class MyClass(value: Seq[T])
我现在希望能够写作
MyClass(t1,t2,t3)
所以我定义
object MyClass {
def apply(value: T*) = new MyClass(value.toSeq)
}
它不起作用,因为案例类定义了
object MyClass {
def apply(value: Seq[T])
}
并且 Seq[T] 和 T* 在擦除后具有相同的类型,所以我不能重载它们。
但我想允许两种访问方式。两种方式都应该允许:
MyClass(t1,t2,t3)
MyClass(some_seq_of_T)
由于 Seq[T] 和 T* 几乎是同一类型(至少在擦除之后;并且在具有参数 T* 的函数内部变为 Seq[T]),我认为应该有一种方法可以允许两种方式调用它.
在那儿?