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

发布于 2024-11-09 16:19:10 字数 325 浏览 0 评论 0原文

考虑这样的事情:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

入画浅相思 2024-11-16 16:19:10

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

object Singleton

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

编辑:在阅读另一个问题/答案后完成了解决方案: Java java.lang.Class的 Scala 等效项Object

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

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

华泰

Here a solution, but it's not pretty ...

object Singleton

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

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

债姬 2024-11-16 16:19:10

您并不是唯一遇到这个问题的人。答案是:目前没有办法避免 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 why classOf[Singleton] does not work

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文