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

标签 class scala programming-languages singleton language-design

考虑这样的事情:

object Singleton

val cls: Class[Singleton] = ???

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

我试过classOf[Singleton] , classOf[Singleton.type] , Singleton.type ,但没有任何效果。

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

最佳答案

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

object Singleton

val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]]

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

注意1:类型删除会阻止这特别有用,例如在模式匹配中。请参阅上面的引用问题/答案以获得很好的解释

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

高温高压

关于class - 如何在编译时获取单例对象的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118129/

相关文章:

Java球在乒乓球中弹跳得很奇怪

C++从main()通过类函数传递指针

scala - Scala 对象定义中没有父类(super class)名称的 "extends {..}"子句有什么作用?

来自类型参数的Scala trait运行时类

scala - Apache-Spark 内部作业调度

c++ - 模板参数推导和统一

programming-languages - 哪些语言提供了对象字面量的使用?

c# - 面向对象设计

c++ - 是否有一种有效、正确的方法将非常大的公共(public)类枚举放在使用它们的公共(public)方法下面,以使代码更干净?

c - C语言查找结构体中的元素