考虑这样的事情:
object Singleton
val cls: Class[Singleton] = ???
我需要写什么而不是???
?
我尝试了classOf[Singleton]
,classOf[Singleton.type]
,Singleton.type
,但没有任何效果。
(我当然知道getClass
classOf
的运行时版本,但这不是我要问的。)
答案 0 :(得分:6)
这是一个解决方案,但它并不漂亮......
object Singleton
val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]]
编辑:阅读完另一个问题/答案后完成解决方案:Scala equivalent of Java java.lang.Class<T> Object
注1:类型擦除会阻止它特别有用,例如:在模式匹配中。请参阅上面的参考问题/答案,以获得更好的解释
注2:scala -explaintypes
标志在理解类型错误方面非常方便。
HTH
答案 1 :(得分:4)
你并不是唯一遇到这个问题的人。答案是:目前无法避免Singleton.getClass
。有关classOf[Singleton]
无效的详细信息,请参阅this评论