【发布时间】:2016-08-14 20:48:53
【问题描述】:
我阅读了the article 中有关 scala 中的单例对象的信息,但没有发现它是否是该类的实例。 下面的简单程序告诉我们,对于这种特殊情况,它是正确的:
class TestMatch(val i: Int)
object TestMatch{
def apply(i: Int) = new TestMatch(i)
def unapply(tm : TestMatch): Option[Int] = Some(tm.i)
}
我试着这样测试它:
println(TestMatch.isInstanceOf[TestMatch]) //false
但它生成了警告fruitless type test。
我不确定如何进行这样的测试。
【问题讨论】:
-
不确定你在这里证明了什么 - 如果你完全删除对象,你仍然会得到相同的结果 -
tm是TestMatch类的一个实例,这些都不是指TestMatch伴随对象。 -
@TzachZohar 是的,我刚刚注意到了。但是原来的问题呢。伴生对象的类型是什么?
-
@TzachZohar 我刚刚编辑了我的问题
-
object TestMatch的类型是TestMatch$。您可以使用TestMatch.getClass进行检查。 它不是类TestMatch的实例!但是你可以通过扩展它来实现,当然......