在 Java 工作了很长时间后,我开始对 Scala 产生了兴趣。作为一个学习项目,我正在尝试复制一个 java 库来存储和检索数据库中的状态对象。为此,我希望能够像这样指定一个状态对象:
@PersistName("PERSON") case class Person extends Entity {
@Persist var id:Long = -1
@Persist @MaxLength(80) var firstName = ""
@Persist @MaxLength(80) var lastName = ""
@Persist var gender = Gender.Male
@Persist @MaxLength(80) var userName = ""
@Persist @OptionClass(classOf[Date]) var birthDay:Option[Date] = None
}
序列化/反序列化 Person 实例的代码使用反射来了解字段的类型,并且对除性别字段之外的所有字段都有效。性别字段是一个枚举,定义为:
object Gender extends Enumeration {
type Gender = Value
val Male,Female,Unknown = Value
}
问题是我不知道如何使用反射也只使用 Person 类创建一个新的 Gender 值。