给定一个具有空构造函数和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}
是否可以使用反射和对象myNewClassInstance检索原始类型MyClass,以便从中创建新的对象实例?
答案 0 :(得分:1)
你可以得到一个超类:
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