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中),那么您也不能进行相等性检查!