有没有办法在Scala asInstanceOf
上执行object
。即使它是单身人士,它仍然是一个例子。那么为什么我不能在这个单身人士上做asInstanceOf
呢?
说:
case object MyObject
答案 0 :(得分:3)
你可以,实际上:
$ scala
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_39).
Type in expressions to have them evaluated.
Type :help for more information.
scala> case object MyObject
defined module MyObject
scala> val x: Any = MyObject
x: Any = MyObject
scala> x.asInstanceOf[MyObject.type]
res0: MyObject.type = MyObject
答案 1 :(得分:0)
根据定义,单例(即Scala对象)只有一个实例,由对象声明中使用的名称引用。
另请注意,在类中,您可以按类名本身引用类型
case class B()
val b = B()
b.isInstanceOf[B]
res: Boolean = true
然而,case object
证明是单个实例;考虑其类型考虑
case object A
A.isInstanceOf[A.type]
res: Boolean = true