6
在scaladoc中,BitSet
定义为延伸Set[Int]
。所以我想用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]
的超级类型?
@jullybobble - 你还是很困惑。 'collection.Set'和'scala.collection.Set'是_完全一样的东西_。你的意思是来自'Predef'的'Set'。 – 2012-03-13 21:36:18
哎呀,对!现在我懂了!感谢您的更正! – 2012-03-13 22:51:32
注:我删除了我对@Rex回答的第一条评论,因为这是错误的和误导性的。 – 2012-03-14 07:29:22