Java 我应该使用嵌套枚举吗?

Java 我应该使用嵌套枚举吗?,java,data-structures,enums,nested,Java,Data Structures,Enums,Nested,假设我需要一个Java数据结构,其中包含一组类别,每个类别都有一组子类别。例如,假设主类别是“品牌”(比如产品),子类别是“产品”。我希望能够将品牌+产品的组合映射到一段数据,例如价格 如果“品牌”和“产品”是独立的,我想对它们使用枚举类型,因为 品牌+产品只有一小部分与之相关的数据(价格) 在一个相当大的程序中,我需要多次引用它们,因此,我将分配给它们的任何字符串文本键键入错误的可能性基本上是一个 但是,品牌/产品的数量太多,无法对每个品牌/产品组合进行单一枚举(大约20个品牌,每个品牌有

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

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

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

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

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

    getPrice(APPLE.IPOD)

    getPrice(APPLE.MACBOOK)

    getPrice(HERSHEYS.PEANUT_BUTTER_CUPS)
我应该使用某种嵌套枚举吗?如果是,将如何实施



额外信息:我花了一点时间在谷歌上搜索“java嵌套枚举”,但什么都没找到。像勾选答案中的第一个或最后一个答案中的第一个这样的结构的问题是,我有太多的类别都表现出相同的行为,无法多次写出非常相似的枚举定义。

我不会为此使用枚举


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

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