【问题标题】:How to get the class of a singleton object at compile time?如何在编译时获取单例对象的类?
【发布时间】:2011-09-01 08:47:46
【问题描述】:

考虑这样的事情:

object Singleton

val cls: Class[Singleton] = ???

我要写什么而不是???

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

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

【问题讨论】:

    标签: class scala programming-languages singleton language-design


    【解决方案1】:

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

    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

    【讨论】:

    • .asInstanceOf[AnyRef] 似乎不需要此功能。
    【解决方案2】:

    你并不孤单。答案是:目前没有办法避免Singleton.getClass。请参阅this 评论了解更多信息为什么classOf[Singleton] 不起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 2020-08-22
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多