Scala非泛型集合
在Scala 2.10.2中,我创建了一个类Scala非泛型集合,scala,scala-collections,generic-collections,Scala,Scala Collections,Generic Collections,在Scala 2.10.2中,我创建了一个类MultiLogger,它将继承自Scala.sys.process.ProcessLogger,提供日志复用 我对这门课的想法有点像这样: class MultiLogger[T <: ProcessLogger] ( private val loggers : Set[T] ) extends Set[T] with scala.collection.SetLike[T,Set[T]] with scala.s
MultiLogger
,它将继承自Scala.sys.process.ProcessLogger
,提供日志复用
我对这门课的想法有点像这样:
class MultiLogger[T <: ProcessLogger]
(
private val loggers : Set[T]
)
extends Set[T]
with scala.collection.SetLike[T,Set[T]]
with scala.sys.ProcessLogger
{
...
}
然后,这就抱怨newBuilder
中的T
不符合multi-logger
的类型要求,这并不奇怪
这是怎么回事?我是否应该根本不使用
ImmutableSetFactory
,只使用我自己的构造函数(它会工作,但看起来不太好,需要考虑和测试!)或者是否存在我不知道的非泛型集合工厂?ImmutableSetFactory
实际上只用于泛型集合,正如它的包(scala.collection.generic
)所暗示的,从它的类型可以看出:
abstract class ImmutableSetFactory[CC[X] <: immutable.Set[X]
with SetLike[X, CC[X]]]
extends SetFactory[CC]
抽象类ImmutableSetFactory[CC[X]第一个类不进行类型检查。t
从何而来?newBuilder
中的t
是否不需要是Yes,但它不符合newBuilder
的类型此代码不应编译的第一个原因是MultiLogger
不符合immum的类型约束tableSetFactory的类型参数。
abstract class ImmutableSetFactory[CC[X] <: immutable.Set[X]
with SetLike[X, CC[X]]]
extends SetFactory[CC]