为什么我不能在Scala中的对象上调用asInstanceOf?

时间:2015-08-21 08:47:41

标签: scala

有没有办法在Scala asInstanceOf上执行object。即使它是单身人士,它仍然是一个例子。那么为什么我不能在这个单身人士上做asInstanceOf呢?

说:

case object MyObject

2 个答案:

答案 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