Class 如何在编译时获取单例对象的类?

Class 如何在编译时获取单例对象的类?,class,scala,programming-languages,singleton,language-design,Class,Scala,Programming Languages,Singleton,Language Design,考虑一下这样的情况: object Singleton val cls: Class[Singleton] = ??? 我需要写什么来代替? 我尝试了[Singleton],[Singleton.type],Singleton.type,但没有任何效果 (我当然知道getClass,运行时版本的classOf,但这不是我要问的。)这里有一个解决方案,但它并不漂亮 object Singleton val cls : Class[Singleton] = Singleton.getClass

考虑一下这样的情况:

object Singleton

val cls: Class[Singleton] = ???
我需要写什么来代替

我尝试了[Singleton],[Singleton.type],
Singleton.type
,但没有任何效果


(我当然知道
getClass
,运行时版本的
classOf
,但这不是我要问的。)

这里有一个解决方案,但它并不漂亮

object Singleton

val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]]
编辑:阅读其他问题/答案后完成解决方案:

注1:类型擦除将防止这种方法特别有用,例如在模式匹配中。请参见上面的参考问题/答案,以获得良好的解释

注2:
scala-explaintypes
标志在理解类型错误方面非常方便


HTH

这个问题并非只有你一个人。答案是:目前没有办法避免出现
Singleton.getClass
。有关[Singleton]的类不起作用的原因的更多信息,请参见注释。

。似乎不需要安装[AnyRef]