Scala:静态访问另一个类的类对象



我有两个类"ClassA"one_answers"ClassB"。我想从ClassA *中获得类对象,显然我做不到。

class ClassA {
  ClassB.getClass() // <-- won't compile
}
class ClassB {
}
惟一的方法是实例化特定的类,并从新创建的对象调用getClass()。但我真的不想为此创建一个新对象!
class ClassA {
  new ClassB().getClass() // <-- compiles, but I don't want to create a new object!
}
class ClassB {
}

在Java中这是直接的。Scala做同样的事情有什么问题?

*对于上下文,我最终想获得ClassB的FQCN。

classOf[ClassB]将给出ClassB的class对象。

下面是工作示例:

class ClassA {
  val bClass = classOf[ClassB]
}
class ClassB {
}
object Main {
  def main(args: Array[String]): Unit = {
    println(new ClassA().bClass/*<- here you got java.lang.Class object*/.getName())
  }
}

Scala 2.11.1将ClassA编译为:

@ScalaSignature(bytes="...")
public class ClassA {
  private final Class<ClassB> bClass = ClassB.class;
  public Class<ClassB> bClass() { return this.bClass; }
}

相关内容

最新更新