如何在编译时获取单例对象的类?
考虑这样的事情:
object Singleton
val cls: Class[Singleton] = ???
我必须写什么来代替 ???
?
我尝试了 classOf[Singleton]
、classOf[Singleton.type]
、Singleton.type
,但没有任何效果。
(我当然知道 getClass
,即 classOf
的运行时版本,但这不是我要问的。)
Consider something like this:
object Singleton
val cls: Class[Singleton] = ???
What do I have to write instead of ???
?
I tried classOf[Singleton]
, classOf[Singleton.type]
, Singleton.type
, but nothing worked.
(I know of course about getClass
, the runtime version of classOf
, but that's not what I'm asking.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个解决方案,但它并不漂亮......
编辑:在阅读另一个问题/答案后完成了解决方案: Java java.lang.Class的 Scala 等效项Object
注1:类型擦除会阻止其特别有用,例如在模式匹配中。请参阅上面引用的问题/答案,以获得很好的解释。
注 2:
scala -explaintypes
标志在理解类型错误方面非常方便。华泰
Here a solution, but it's not pretty ...
Edit: completed the solution after reading another question/answer: Scala equivalent of Java java.lang.Class<T> Object
Note1: type erasure would prevent this from being particularly useful, e.g. in pattern matching. See referenced question/answer, above, for a good explanation
Note2: the
scala -explaintypes
flag is quite handy in understanding type errors.HTH
您并不是唯一遇到这个问题的人。答案是:目前没有办法避免
Singleton.getClass
。请参阅此评论以了解classOf[Singleton]
不起作用的更多信息You are not alone with this problem. The answer is: There is currently no way to avoid a
Singleton.getClass
. See this comment for more information whyclassOf[Singleton]
does not work