3

クラス「アイテム」のオブジェクトを保持する Hashtable を保持する Stored という名前のクラスがあります。私はこれまで Hashtables を使用したことがないか、実際に Hashtables についてよく知っていますが、調べてみると、Hashtables にはさまざまな使用方法があるように思えます。だから私の質問は、どれが最高ですか? なぜ?

コードが更新されました

私は私のプログラムにこれを持っています...

public class Store implements Serializable{

Hashtable<String, Item> store = new Hashtable<String, Item>();

}

これも見たことある…

Hashtable<Object> store = new Hashtable<Object>();

一方が他方よりも優れていますか?

また、参考までに、私の Item Class Objects には、変数として 2 つの文字列と int が含まれます。

また、これらの Hashtables にコンストラクターまたはサイズの初期化が必要かどうかも疑問に思っていますか? 私はそれをいくつかの例で見ましたが、他の例では見ませんでした。私が知る限り、それらは自動的にサイズが大きくなるので...ポイントは何ですか?

編集:

これをメインに持って...

Store store = new Store();

    Item item1 = new Item();
    item1.setProductName("Paper Towel Roll");
    item1.setBarCode("111222333444");
    item1.setQuantity(1);

    store.put("111222333444", item1);

    Item item2 = new Item();
    item2.setProductName("Paper Towel Roll");
    item2.setBarCode("111222333444");
    item2.setQuantity(1);

    store.put("111222333444", item2);

    Item item3 = new Item();
    item3.setProductName("Paper Towel Roll");
    item3.setBarCode("111222333444");
    item3.setQuantity(1);

    store.put("111222333444", item3);

    Item item4 = new Item();
    item4.setProductName("Paper Towel Roll");
    item4.setBarCode("111222333444");
    item4.setQuantity(1);

    store.put("111222333444", item4);

put() 呼び出しが機能しません。HashTable にアクセスできないのはなぜですか?

4

5 に答える 5

2

表示されるものは Hashtables とは関係ありません。Genericsと呼ばれる言語の機能です。新しいクラスを作成することなく、定義したオブジェクトで使用するタイプを制限できます。

典型的な使用法は次のとおりです。

 Hashtable<Integer, Item> store = new Hashtable<Integer, Item>();

これにより、ユーザーが定義した型を使用する操作で、型が一致する場合にのみ受け入れられるようになります。

そう、

 store.put(1, new Ítem());

動作しますが、

 store.put(2, new String("Hello world"));

Stringはのサブクラスではないため、失敗しItemます。

ジェネリックを使用しない場合は、古いスタイルの Java を vg します。

 Hashtable store = new Hashtable();

それは機能しますが、コンパイラは失敗を検出しません

 store.put(2, new String("Hello world"));

そのため、(通常)便利なコントロールが失われます。

于 2013-04-16T21:17:22.370 に答える
0

ジェネリックを使用する場合は、次のようにします。

Hashtable<Key,Item> store = new Hashtable<Key, Item>();

Hashtablegenerics を使用せずにa のラッパー クラスを使用する場合は、自分自身にキャストObjectする必要がありItemます。あなたがそうする理由がわかりません。

于 2013-04-16T21:19:32.123 に答える