【发布时间】:2015-07-09 19:15:22
【问题描述】:
我目前正在用 Groovy 设计一个模型。 所以,我有一些静态值需要映射到模型上。
例如:
class Model () {
StaticValues values
}
最初,我正在考虑将其实现为枚举。
enum StaticValues {
VALUE!, VALUE2, ...
}
问题是,它最终会变得非常大,可能包含数百个元素。由于无法对枚举进行子类化,是否有解决此问题的替代方法?
StaticValues 是普通的硬编码常量。这些值甚至可以表示为纯字符串。
但是,这些值将用作查询此模型的键。因此,重要的是它只包含有效值。这就是为什么我打算将值字段设为“类型化”而不是字符串。
【问题讨论】:
-
如果不了解您要解决的问题的更多信息,就很难提出替代方案。具有数百个常量的枚举可能是合适的。或者,枚举可能是完全错误的方法。
-
对于包含数百个成员的枚举,您面临什么具体问题?另外,您提到子类化枚举。您是否正在寻找可以处理层次结构的解决方案?
-
@VGR 我需要确保在“值”字段上只分配有效值。所以,我试图让它类型安全。
-
@AndyThomas 我不完全确定拥有数百名成员的枚举是否不好,但我不确定它是解决此问题的最佳方法。我正在考虑多态性,只是为了将这些常量拆分,同时在“值”字段上保持类型安全。
-
请提供更多信息。你说值的数量是静态的,但可能可能是数百个。所以你生成枚举?价值观从何而来?谁定义了它们?谁,如何或什么将使用这些值?也生成代码?一个用户。您编写的代码,还是会成为 API 的一部分?你是从其他语言包装 API 吗?请编辑您的问题,添加所有信息。
标签: java design-patterns groovy enums data-modeling