没有实例的Scala类值

时间:2016-08-19 18:40:00

标签: scala class

为了与Java库进行互操作,我需要获取java.lang.Class[T]的实例。假设我已经得到以下case class定义:

case class Foo(name: String, colour: String, amount: Int)

给定val bar: Foo的实例,我可以通过调用bar.getClass来获取该实例的类。

但是,我还没有Foo的实例:这就是为什么我需要Class[T]的实例。无论如何在没有创建Class[T]的实例的情况下获得Foo这样的实例?

1 个答案:

答案 0 :(得分:0)

使用预定义函数classOf可以通过多种方式在Scala中获取类值。

在您的情况下(如@Kolmar所述),classOf[Foo]可用于获取未实例化对象的类。请注意,输出可能有点令人困惑(来自工作表):

classOf[Foo] = class A$A12$A$A12$Foo
classOf[String]  // class java.lang.String
classOf[List[String]]  // class scala.collection.immutable.List
classOf[Array[String]]  // class [Ljava.lang.String;

考虑到稍微奇怪的输出语法,后者很容易混淆。