Scala - 如何在反射中获取constructore字段值?

时间:2016-02-10 11:09:06

标签: scala reflection

我对scala很陌生并且在反思中苦苦挣扎。

鉴于以下类别:

class Person (name: String) {
 .....
}

和给定的实例:

val p = new Person ("MyName")

如何在反射中检索值“MyName”?

BTW - 我尝试使用getClass.getDeclaredFields()进行java反射,但没有运气......

谢谢!

2 个答案:

答案 0 :(得分:3)

S = W*(Q -2*mu*m + mu*mu) = W*( (mu-m)*(mu-m) + Q - m*m) 不是示例中类的成员,它只是构造函数的函数参数。 scala的区别相当微妙,因为整个类是在构造函数体内定义的,所以,它实际上是一个闭包,你可以在任何地方使用这些参数,但仍然存在差异。

nameclass Person(val name: String))声明一个具有实例成员(最终或可写)class Person(var name: String的类。 name没有实例变量,class Person(name: String)只是构造函数的参数。

案例类是特殊的,因为它们默认将所有构造函数参数视为val,这是&#34;语法糖&#34;:name实际上是指`case class Person(val name:String)。< / p>

答案 1 :(得分:-1)

我认为你应该在定义构造函数时添加修饰符var或val。 即,

class Person(var name:String){  ..... }

并检索值“MyName”,你可以这样做,

val p = new Person(“MyName”);

和名称是:p.name