В скаладоке BitSet
определяется как расширение Set[Int]
.Поэтому я подумал, что использование BitSet
, как в случае Set[Int]
, будет работать, но я получаю несоответствие типов:
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
scala> import collection.BitSet
import collection.BitSet
scala> val b: Set[Int] = BitSet()
<console>:8: error: type mismatch;
found : scala.collection.BitSet
required: Set[Int]
val b: Set[Int] = BitSet()
^
Однако приведение типов работает:
scala> val b: Set[Int] = BitSet().asInstanceOf[Set[Int]]
b: Set[Int] = BitSet()
Так почемумне нужно явно привести BitSet
к Set[Int]
, в то время как Set[Int]
является супертипом Set[Int]
?