2011-10-20 5 views
0

Если я следующий SCALA объект:Scala отражение на объекте

object CustomerState { 
    val PENDING = "pending" 
    val TRIAL = "trial" 
    val PAYING = "paying" 
    val DEACTIVATED_TRIAL = "deactivated_trial" 
    val DEACTIVATED_PAYING = "deactivated_paying" 
} 

Как я могу получить список всех значений VAL? В этом случае, я ищу, чтобы получить список («до», «суд», «платить», «deactivated_trial», «deactivated_paying»)

Спасибо заранее, Тодд

ответ

3

На данный момент я думаю, что лучшее, что можно сделать, чтобы получить список всех методов нулевого аргумента (так как это то, что val s компилируются) и называть их:

CustomerState.getClass.getMethods.toList.filter(_.getParameterTypes.isEmpty).map(_.invoke(CustomerState)) 

В 2.10 будет создана библиотека, отражающая Scala, что улучшит ситуацию.

3

не должен» t вы используете Enumeration?

Пример:

object Main extends Application { 

    object CustomerState extends Enumeration { 
    type CustomerState = Value 
    val Pending, Trial, Paying, Deactivated = Value 
    } 

    import CustomerState._ 

    CustomerState.values foreach println // Will print each value 
} 
+1

Я думал, что преобладающая мудрость заключалась в том, что перечисление Scala было аберрацией, которую лучше всего избегать. –

+0

В этом случае это работает –

+1

У меня такое же впечатление на использование перечисления в scala –

Смежные вопросы