После долгой работы на 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
}
Проблема в том, что я не знаю, как я могу использовать отражение, чтобы создать новое значение Gender, используя только класс Person.