【发布时间】:2012-03-09 23:09:47
【问题描述】:
我想知道如何在 Scala 中获取对象类型的类对象。好吧,因为对象的双重含义,那是一张满嘴的嘴。所以这里有一个会失败的例子:
object Main
{
private [this] val TAG = classOf [Main].getName;
} // Main
如果Main 是类,它就可以完美运行。有任何想法吗?
【问题讨论】:
标签: scala
我想知道如何在 Scala 中获取对象类型的类对象。好吧,因为对象的双重含义,那是一张满嘴的嘴。所以这里有一个会失败的例子:
object Main
{
private [this] val TAG = classOf [Main].getName;
} // Main
如果Main 是类,它就可以完美运行。有任何想法吗?
【问题讨论】:
标签: scala
scala> Main.getClass
res1: java.lang.Class[_] = class Main$
【讨论】:
objects 只有一个实例,因此您调用 getClass。谢谢。
objects 根本没有 有 实例,因为它们不是类型;它们是(编译器生成的)类的唯一实例,这就是为什么您可以调用getClass。
classOf[Main]不起作用的原因是Main不是类型。
类和特征定义类型,对象没有。
【讨论】:
由于 Main 是一个对象,为了让您的示例正常工作,只需将分配行替换为;
private [this] val TAG = this.getClass.getName;
【讨论】: