给定一个带有空构造函数和var的类:
class MyClass() {
var myVar: Int = 0
}
当用闭包实例化类时,将产生一个具有匿名类的底层类型的对象,而不是MyClass:
// getClass yields type my.package.MainClass$$anonfun$1$anonfun$apply...
val myNewClassInstance: MyClass = new MyClass() { myVar = 2}
是否有可能检索原始类类型MyClass使用反射和对象myNewClassInstance,以创建新的对象实例?
你可以得到一个超类:
scala> class MyClass
defined class MyClass
scala> val a = new MyClass { val c = 5 }
a: MyClass{val c: Int} = $anon$1@48cf768c
scala> a.getClass
res0: Class[_ <: MyClass] = class $anon$1
scala> a.getClass.getSuperclass
res1: Class[?0] forSome { type ?0 >: ?0; type ?0 <: MyClass } = class MyClass