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

soc*_*soc 9 singleton programming-languages scala language-design class

考虑这样的事情:

object Singleton

val cls: Class[Singleton] = ???
Run Code Online (Sandbox Code Playgroud)

我需要写什么而不是???

我试过classOf[Singleton],classOf[Singleton.type],Singleton.type,但毫无效果.

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

lah*_*her 6

这是一个解决方案,但它并不漂亮......

object Singleton

val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]]
Run Code Online (Sandbox Code Playgroud)

编辑:阅读完另一个问题/答案后完成解决方案:Scala相当于Java java.lang.Class <T> Object

注1:类型擦除会阻止它特别有用,例如在模式匹配中.请参阅上面的参考问题/答案,以获得更好的解释

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

HTH