我应该使用嵌套枚举吗?

时间:2013-01-10 11:57:05

标签: java data-structures enums nested

假设我需要一个Java中的数据结构,涉及一组类别,每个类别都有一组子类别。例如,假设主要类别是“品牌”(类似于产品),子类别是“产品”。我希望能够将品牌+产品的组合映射到一条数据,例如价格。

如果他们独自使用'品牌'和'产品',我想使用枚举类型,因为

  • 品牌+产品只有一小块单一数据(价格)

  • 我需要在一个相当大的程序中多次引用它们,所以我错误输入我分配给它们的任何字符串文字键的可能性基本上都是一个。

然而,品牌/产品的数量太大,每个品牌/产品组合都没有单个枚举(大约20个品牌,每个品牌有10个产品,很有可能在以后添加更多产品)。我希望能够使用这样的结构:

    getPrice(APPLE.IPOD)

    getPrice(APPLE.MACBOOK)

    getPrice(HERSHEYS.PEANUT_BUTTER_CUPS)

我应该使用某种嵌套枚举吗?如果是这样,将如何实施?


奖金信息:我花了一些时间谷歌搜索'java嵌套枚举',但没有想出任何东西。结构回答here中的第一个结构或者回答here中的结构问题是我有太多类别都表现出相同的行为来写出非常相似的枚举定义这么多次。

2 个答案:

答案 0 :(得分:3)

我不会为此使用枚举。

我建议您从文件或数据库加载此信息。 Java不是存储大量数据的好地方。

答案 1 :(得分:0)

您可以在允许设置产品枚举的品牌枚举中添加getter和setter,但这不会强制产品实际上是由该品牌制造的。此外,每个枚举值只有一个实例 - 所以你永远不会有APPLE.IPOD和APPLE.IPAD。您需要一个代表笛卡尔积的枚举类型,或者您需要从Peter Lawrey建议的数据存储中加载您的值。