如何获取Enumeration Value的枚举定义?

For*_*Guo 3 enumeration scala

object TestEnum extends Enumeration{
  val One = Value("One")
  val Two,Three= Value
}
println(TestEnum.One.getClass)
println(TestEnum.One.getClass.getDeclaringClass)//get Enumeration
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何从TestEnum.One获取Class [TestEnum]?

谢谢.

oxb*_*kes 7

不幸的是我不认为你.TestEnum.One实际上只是该类的一个实例Enumeration#Value.事实上,它比这更糟糕 - 你的枚举值都被类型删除到同一个东西:

object Weekday extends Enumeration {
  val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}

def foo(w: Weekday.Value)
def foo(e: TestEnum.Value) //won't compile as they erase to same type
Run Code Online (Sandbox Code Playgroud)

由于枚举的实例只是实例Enumeration#Value,它们的声明类只是scala.Enumeration.

这令人沮丧,但似乎这些scala枚举比无用更糟糕; 如果你通过序列化传递它们(至少在2.7.7中),那么你也不能进行等式检查!