在spark-shell(使用scala-repl)中,似乎不可能创建一个具有默认构造函数的(case)类(即无参数构造函数):
scala> case class Hello(i: Int) {
| def this() = this(0)
| }
defined class Hello
scala> classOf[Hello].getName
res1: String = Hello
scala> classOf[Hello].getConstructors()
res2: Array[java.lang.reflect.Constructor[_]] = Array(public Hello($iw), public Hello($iw,int))
这使杰克逊无法将某些内容反序列化为此类,因为使用反射构造该类的实例并不是一种简单的方法。
是否可以使case类在spark shell中有一个默认构造函数?