这个问题在这里已有答案:
假设你有一个像这样的Scala案例类:
case class A(a: Int, b: Int)
如何获得它的Class
表示,你通常用.getClass
得到的那个?
什么不起作用:
调用A.getClass
不会给你类信息,而是随附的自动生成对象。您可以通过调用:A.getClass.getDeclaredFields.toList
来观察它,它会给你这个列表:List(public static A$ A$.MODULE$)
而不是a
和b
字段。
调用A(null, null).getClass
确实有效,因为我们实例化了一个虚拟对象,但是它更冗长,感觉很脏,并且与“wartremover”之类的编译器连接不一致。
使用Scala-s内置的classOf[A]
。然后,Scala编译器将自动插入正确的类型。