【问题标题】:Splitting out very large enums in java/groovy在 java/groovy 中拆分出非常大的枚举
【发布时间】: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


【解决方案1】:

你可以用enum实现一个接口,你可以有多个enum实现这个接口或子类。

顺便说一句,几百个枚举应该不是问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多