如何获取scala对象类型的classOf

Mar*_*tin 57 scala

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

object Main
{
   private [this] val TAG = classOf [Main].getName;
} // Main
Run Code Online (Sandbox Code Playgroud)

如果Main是上课,那就完美了.有任何想法吗?

Ale*_*nov 85

scala> Main.getClass
res1: java.lang.Class[_] = class Main$
Run Code Online (Sandbox Code Playgroud)

  • @Martin实际上,我说这是不正确的.`object`s根本没有_have_实例,因为它们不是类型; 它们是(编译器生成的)类的唯一实例,这就是你可以调用`getClass`的原因. (6认同)
  • 他们这样做的方法是编译时常量,以便它可以用于类型为Class的Java Annotation属性吗? (4认同)

Jes*_*per 17

之所以classOf[Main]不起作用,是因为Main不是一种类型.

类和特征定义类型,对象不定义.


Joa*_*son 9

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

private [this] val TAG = this.getClass.getName;
Run Code Online (Sandbox Code Playgroud)