Scala非泛型集合

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

在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.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]