【问题标题】:How the get the classOf for a scala object type如何获取 scala 对象类型的 classOf
【发布时间】:2012-03-09 23:09:47
【问题描述】:

我想知道如何在 Scala 中获取对象类型的类对象。好吧,因为对象的双重含义,那是一张满嘴的嘴。所以这里有一个会失败的例子:

object Main
{
   private [this] val TAG = classOf [Main].getName;
} // Main

如果Main 是类,它就可以完美运行。有任何想法吗?

【问题讨论】:

    标签: scala


    【解决方案1】:
    scala> Main.getClass
    res1: java.lang.Class[_] = class Main$
    

    【讨论】:

    • 是的。我明白了,现在一切都清楚了。 objects 只有一个实例,因此您调用 getClass。谢谢。
    • @Martin 实际上,我会说这是不正确的。 objects 根本没有 实例,因为它们不是类型;它们(编译器生成的)类的唯一实例,这就是为什么您可以调用getClass
    • 他们是否可以将其作为编译时常量,以便可用于 Class 类型的 Java 注释属性?
    • @MarkusKnecht 我一个都不认识;您可能想将此作为一个单独的问题提出。
    【解决方案2】:

    classOf[Main]不起作用的原因是Main不是类型

    类和特征定义类型,对象没有。

    【讨论】:

      【解决方案3】:

      由于 Main 是一个对象,为了让您的示例正常工作,只需将分配行替换为;

      private [this] val TAG = this.getClass.getName;
      

      【讨论】:

        猜你喜欢
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-07
        相关资源
        最近更新 更多