假设我需要一个涉及一组类别的Java数据结构,每个类别有一组子类别。例如,假设主类别是"品牌"(比如产品),子类别是"产品"。我希望能够将品牌+产品的组合映射到一条数据,例如价格。
如果'brand'和'product'是独立的,我想对它们都使用枚举类型,因为
-
品牌+产品只有一小部分数据与之相关(价格)
-
在一个相当大的程序中,我需要多次引用它们,所以我输错我分配给它们的任何字符串字键的可能性基本上是1。
getPrice(APPLE.IPOD)
getPrice(APPLE.MACBOOK)
getPrice(HERSHEYS.PEANUT_BUTTER_CUPS)
我应该使用某种嵌套枚举吗?如果是,该如何实施?
额外信息:我花了一点时间在谷歌上搜索"java嵌套枚举",但没有找到任何东西。像这里打勾的答案中的第一个结构或这里的丢失的答案中的结构的问题是,我有太多的类别都表现出相同的行为,因此多次写出非常相似的enum定义。
我不会使用enum。
我建议您从文件或数据库中加载此信息。Java不是存储大量数据的好地方。
你可以在Brand enum中添加getter和setter,以允许设置Product enum,但这不会强制产品实际上是由该Brand制造的。此外,每个枚举值永远只有一个实例——所以你永远不可能有APPLE。IPOD和苹果的ipad。您要么需要单个枚举类型来表示笛卡尔积,要么需要像Peter Lawrey建议的那样从数据存储中加载值。