Почему BitSet требует, чтобы явное приведение рассматривалось как экземпляр Set[Int]?

В scaladocBitSetопределяется как расширение 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()
: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]?

6
задан Julien Gaugaz 13 March 2012 в 21:04
поделиться