2

Java で、1 セットのカテゴリと、それぞれ 1 セットのサブカテゴリを含むデータ構造が必要だとします。たとえば、メイン カテゴリが「ブランド」(製品など) で、サブカテゴリが「製品」であるとします。ブランドと製品の組み合わせを価格などのデータにマッピングできるようにしたいと考えています。

「ブランド」と「製品」が単独である場合は、両方に列挙型を使用したいと思います。

  • ブランド+製品には、それに関連付けられた小さな単一のデータ(価格)しかありません

  • かなり大きなプログラム全体で何度もそれらを参照する必要があるため、それらに割り当てた文字列リテラル キーをタイプミスする可能性は基本的に 1 つです。

ただし、ブランド/製品の数が多すぎて、ブランド/製品の組み合わせごとに1 つの列挙型を使用できません (それぞれ約 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

Product 列挙型を設定できる Brand 列挙型に getter と setter を追加することはできますが、それは Product が実際にそのブランドによって製造されたことを強制するものではありません。さらに、各列挙値のインスタンスは常に 1 つだけです。つまり、APPLE.IPOD と APPLE.IPAD を持つことはできません。デカルト積を表す単一の列挙型が必要か、Peter Lawrey が示唆するようにデータ ストアから値を読み込む必要があります。

于 2013-01-10T12:19:10.813 に答える