2

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

如果它们是独立的,我想对“品牌”和“产品”都使用枚举类型,因为

  • 品牌+产品只有一小部分与之相关的数据(价格)

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

但是,品牌/产品的数量太大,无法为每个品牌/产品组合提供一个枚举(大约 20 个品牌,每个品牌有 10 个产品,以后很有可能添加更多)。我希望能够使用这样的结构:

    getPrice(APPLE.IPOD)

    getPrice(APPLE.MACBOOK)

    getPrice(HERSHEYS.PEANUT_BUTTER_CUPS)

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


奖励信息:我花了一些时间在谷歌上搜索“java 嵌套枚举”,但没有提出任何建议。与此处勾选的答案中的第一个或此处的 thelosts 的答案类似的结构的问题是,我有太多的类别都表现出相同的行为,无法多次写出非常相似的枚举定义。

4

2 回答 2

3

我不会为此使用枚举。

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

于 2013-01-10T12:03:10.203 回答
0

您可以将 getter 和 setter 添加到允许设置 Product 枚举的 Brand 枚举,但这不会强制 Product 实际由该 Brand 制造。此外,每个枚举值只有一个实例——因此您永远不可能拥有 APPLE.IPOD 和 APPLE.IPAD。您要么需要一个表示笛卡尔积的枚举类型,要么需要像 Peter Lawrey 建议的那样从数据存储中加载值。

于 2013-01-10T12:19:10.813 回答