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 値を作成する方法がわからないことです。