Как я могу получить все объекты в объекте с отражением?
Рассмотрим этот код:
object MonthDay extends MyEnum {
//Some important holidays
object NewYear extends MonthDay( 1, 1)
object UnityDay extends MonthDay(11, 9)
object SaintNicholas extends MonthDay(12, 6)
object Christmas extends MonthDay(12, 24)
}
class MonthDay(month: Int, day: Int)
trait MyEnum {
val values: List[MonthDay] = this.getClass.getField("MODULE$")...
val next: MonthDay = ...
val previous: MonthDay = ...
}
//Of course the user can create his own MonthDays
val myBirthDay = new MonthDay(month, day)
if(!MonthDay.values.contains(myBirthDay)) "Well, I probably have to work"
else "Great, it is a holiday!"
Я хочу иметь черту (MyEnum
), которую я могу смешивать с объектом, содержащим мои "объекты перечисления", с методами, чтобы возвращать их список (def values: List[MonthDay]
) или перебирать их (def next: MonthDay
или def previous: MonthDay
) , не повторяя себя несколько раз (это абсолютно важно!).
Идея состоит в том, что values
обращается к объекту MonthDay
и находит все одноэлементные объекты класса, который они расширяют (MonthDay
), с отражением.