我对scala很陌生并且在反思中苦苦挣扎。
鉴于以下类别:
class Person (name: String) {
.....
}
和给定的实例:
val p = new Person ("MyName")
如何在反射中检索值“MyName”?
BTW - 我尝试使用getClass.getDeclaredFields()进行java反射,但没有运气......
谢谢!
答案 0 :(得分:3)
S = W*(Q -2*mu*m + mu*mu)
= W*( (mu-m)*(mu-m) + Q - m*m)
不是示例中类的成员,它只是构造函数的函数参数。 scala的区别相当微妙,因为整个类是在构造函数体内定义的,所以,它实际上是一个闭包,你可以在任何地方使用这些参数,但仍然存在差异。
name
或class Person(val name: String)
)声明一个具有实例成员(最终或可写)class Person(var name: String
的类。
name
没有实例变量,class Person(name: String)
只是构造函数的参数。
案例类是特殊的,因为它们默认将所有构造函数参数视为val,这是"语法糖":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