2013-01-10 38 views
2

说我需要Java中的一个数据结构,涉及一组类别,每个类别都有一组子类。例如,假设主要类别是“品牌”(例如产品),子类别是“产品”。我希望能够将品牌+产品的组合映射到一些数据,例如一个价格。我应该使用嵌套的枚举吗?

我想使用一个枚举类型都“品牌”和“产品”,如果他们自己,因为

  • 品牌+产品捆绑只有一小,单件数据(价格)

  • 我需要在一个合理的大型程序中多次引用它们,所以我错误地键入任何字符串字符键我分配给他们的机会基本上是一个。

然而,品牌/产品的数量太大,有枚举每个品牌/产品组合(大约每十个产品,后来加入了更多的好机会20个大品牌)。我想能够使用这样的结构:

getPrice(APPLE.IPOD) 

    getPrice(APPLE.MACBOOK) 

    getPrice(HERSHEYS.PEANUT_BUTTER_CUPS) 

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


附加信息:我花了一点时间搜索'java嵌套枚举',但没有拿出任何东西。像被打勾的答案here或失败回答here中的第一个结构的问题是,我有太多类别都显示相同的行为,以便多次写出非常类似的枚举定义。

回答

3

我不会为此使用枚举。

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

0

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