一般处理枚举的Scala类

Tal*_*lin 1 generics parameters enums types scala

我想创建一个包含枚举值的泛型类,并且还允许访问枚举的可能值.例如,可以考虑属性编辑器 - 您需要知道属性的当前值,并且还需要能够知道属性的其他值是合法的.并且不应提前知道枚举的类型,您应该能够使用任何类型的枚举.

我的第一个想法是这样的:

class EnumerationProperty[T <: Enumeration](value:T)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为对于枚举T不是类型,它是一个对象.我尝试过的其他变化是:

class EnumerationProperty[T <: Enumeration](value:T.Value)
class EnumerationProperty[T <: Enumeration.Value](value:T)
Run Code Online (Sandbox Code Playgroud)

(我不会详细说明为什么这些不起作用,因为我怀疑原因并不有趣.)

zve*_*vez 5

对于你问题的第一部分.您可以为通用枚举值定义持有者,如下所示:

case class EnumerationProperty[T <: Enumeration#Value](value:T)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在没有显式传递Enumeration对象的情况下获取所有枚举值.枚举有values()获取所有值的方法.Enumeration#Value链接到Enumeration,但具有私有访问权限