我想创建一个泛型类来保存枚举的值,并且还允许访问枚举的可能值。以属性编辑器为例——您需要知道属性的当前值,并且还需要能够知道该属性还有哪些其他值是合法的。枚举的类型不应事先知道,您应该能够使用任何类型的枚举。
我的第一个想法是这样的:
class EnumerationProperty[T <: Enumeration](value:T)
但是,这不起作用,因为对于枚举 T 不是类型,而是对象。我尝试过的其他变体是:
class EnumerationProperty[T <: Enumeration](value:T.Value)
class EnumerationProperty[T <: Enumeration.Value](value:T)
(我不会详细说明为什么这些不起作用,因为我怀疑这些原因并不有趣。)
最佳答案
对于您问题的第一部分。您可以像这样为通用枚举值定义 holder:
case class EnumerationProperty[T <: Enumeration#Value](value:T)
但我不知道如何在不显式传递 Enumeration 对象的情况下获取所有枚举值。枚举有 values()
方法来获取所有值。 Enumeration#Value 链接到 Enumeration,但具有私有(private)访问权限
关于一般处理枚举的 Scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451152/