我正在学习Scala,但无法找到如何实现以下内容:
我正在编写一个在Scala对象和Google App Engine实体之间进行映射的mapper。如果我有一个像这样的类:
class Student {
var id:Long
var name:String
}
我需要创建该类的一个实例,在Java中,我可以通过名称获取Field,然后执行field.set(object, value)
,但是我找不到在Scala中如何执行此操作。
由于Student的字段被视为私有字段,并且因此field.set
会抛出错误,因此我无法使用Java反射。
谢谢
find
方法的定义,使用javabeans来实现这个功能。例如,对于getV
方法:find(_.getName == s"get${lowerCamelToUpperCamel(name)}"
,对于setter:find(_.getName == s"set${lowerCamelToUpperCamel(name)}"
。当然,你还需要定义一个lowerCamelToUpperCamel
函数,例如使用Guava:def lowerCamelToUpperCamel(str : String) { CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, str)}
。 - RyanQuey