一般处理枚举的 Scala 类

标签 scala generics types parameters enums

我想创建一个泛型类来保存枚举的值,并且还允许访问枚举的可能值。以属性编辑器为例——您需要知道属性的当前值,并且还需要能够知道该属性还有哪些其他值是合法的。枚举的类型不应事先知道,您应该能够使用任何类型的枚举。

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

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/

相关文章:

python - 有没有比 int( byte_buffer.encode ('hex' ), 16 ) 更好的方法

scala - 如果过滤函数导致空列表,则返回未过滤列表

Java 将 List<String> 作为 Class<T> 传递,想要知道列表的类型

java - 将元素添加到 List<?扩展父类(super class)>,需要澄清

r - 有序因子导致 sapply(df, class) 返回列表而不是向量

javascript - Typescript:将类型定义为类型与部分存在的对象的联合

scala - 在 Scala 2.8 中,为什么 Iterator 有 contains 方法而 Iterable 没有?

scala - 将SORM与Play Framework 2.3.8结合使用

json - 使用自定义表示在 Scala 中对 ADT 进行通用派生

c# - 实现通用接口(interface)的类的字典