我有两节课。
Class A {
var something : String =_
}
Class B extends A{
var somethingElse : String =_
}
我将分别实例化这两个类。
var a = new A
a.something =“测试我”
var b = new B
在开始将值分配给“b”之前我想将对象“a”的内容复制到“b”中。是否可以使用反射或任何第三方API在scala中执行此操作?
答案 0 :(得分:0)
在apply
的伴随对象中实施A => B
类B
方法,并在[{3}}上进行反思可能会有效:
object B {
def apply(a: A): B = {
val aFields = a.getClass.getDeclaredFields
aFields.foreach(_.setAccessible(true))
val b = new B
val bFields = b.getClass.getSuperclass.getDeclaredFields
bFields.foreach(_.setAccessible(true))
for {
aField <- aFields
bField <- bFields
if (aField.getName == bField.getName)
} { bField.set(b, aField.get(a)) }
b
}
}
var a = new A
a.something ="test me"
var b = B(a)
println(b.something) // test me