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]?
谢谢.
不幸的是我不认为你.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中),那么你也不能进行等式检查!