为了与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
这样的实例?
答案 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;
考虑到稍微奇怪的输出语法,后者很容易混淆。