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

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

谢谢。

最佳答案

我认为您不能不幸。 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

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

这令人沮丧,但似乎这些scala枚举比没有用的枚举更糟。如果通过序列化传递它们(至少在2.7.7中),那么您也不能进行相等性检查!

07-26 04:08