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