物体上的Scala反射
如果我有以下scala对象:物体上的Scala反射,scala,Scala,如果我有以下scala对象: object CustomerState { val PENDING = "pending" val TRIAL = "trial" val PAYING = "paying" val DEACTIVATED_TRIAL = "deactivated_trial" val DEACTIVATED_PAYING = "deactivated_paying" } 如何获取所有val值的列表?在本例中,我希望获得一个列表(“待定”、“审判”
object CustomerState {
val PENDING = "pending"
val TRIAL = "trial"
val PAYING = "paying"
val DEACTIVATED_TRIAL = "deactivated_trial"
val DEACTIVATED_PAYING = "deactivated_paying"
}
如何获取所有val值的列表?在本例中,我希望获得一个列表(“待定”、“审判”、“付款”、“已停用的审判”、“已停用的付款”)
提前感谢,,
托德,难道你不应该用一个
例如:
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
}
你不应该用一个新的吗
例如:
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
}
目前,我认为您能做的最好的事情是获取所有零参数方法的列表(因为编译
val
s就是为了这些方法),并调用它们:
CustomerState.getClass.getMethods.toList.filter(_.getParameterTypes.isEmpty).map(_.invoke(CustomerState))
2.10中将有一个Scala特有的反射库,这将使事情变得更好。目前,我认为你能做的最好的事情是获得所有零参数方法的列表(因为编译
val
s就是为了这个)并调用它们:
CustomerState.getClass.getMethods.toList.filter(_.getParameterTypes.isEmpty).map(_.invoke(CustomerState))
在2.10中会有一个Scala特有的反射库,这将使事情变得更好。我认为流行的观点是,Scala枚举是最好避免的异常。我对Scala中使用枚举有着相同的印象。我将在一周中的任何一天使用枚举而不是反射。这些对象与Salat case类一起使用,所以simpleI并不认为流行的观点是Scala枚举是最好避免的异常。我对Scala中枚举的使用有着相同的印象。我会在一周中的任何一天将枚举置于反射之上。这些对象与Salat case类一起使用,所以它并不是那么简单