我有一段代码如下
object TestReflection {
def main(args: Array[String]): Unit = {
val cls = Class.forName("test.Child")
cls.getDeclaredField("w")
cls.getDeclaredField("x")
cls.getDeclaredField("z")
}
}
class Parent(val x : Int, val t : Int) {
}
class Child(x : Int, z : Int, val w : Int) extends Parent(x, 0) {
}
似乎cls.getDeclaredField(" x")和cls.getDeclaredField(" z")都不会兴奋。有人知道如何正确访问它们吗?
由于
答案 0 :(得分:0)
Child中的x和z不是变量,它们是构造函数参数(即它们仅用于构造而不是构造对象的一部分),因此您无法访问它们。
你可以访问field = cls.getSuperclass.getDeclaredField(“x”),因为x在超类中定义为val,但这不是构造中的x,而是从父级继承的x。
要访问z,您需要将其分配给能够在构造中存活的内容。