Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
物体上的Scala反射_Scala - Fatal编程技术网

物体上的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值的列表?在本例中,我希望获得一个列表(“待定”、“审判”

如果我有以下scala对象:

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类一起使用,所以它并不是那么简单