4
A a = new A();     //classA {   }

HashMap<String, Object> hm = new Hashmap<String,Object>();

hm.put("A", a);

私の質問は、同じ宣言に「A」の代わりにオブジェクト自体を配置するにはどうすればよいですか?

hm.put(`a??`, a);
4

5 に答える 5

3

あなたはそれをすることはできません.言語はそれを禁止しています. はJavaのように宣言されているため、クラスが不可能なAサブクラスである場合にのみ可能です。StringStringfinal

インタビューの質問に関して: 宣言に選択されたジェネリック型パラメーターのため、それは不可能です。詳細については、Bounded Type Parametersを参照してください。

于 2012-09-30T18:37:34.310 に答える
1
A a = new A();     //classA {   }

Map<A, A> hm = new Hashmap<A, A>();

hm.put(a, a);

しかし、私は置く意味がわかりませんa->a

于 2012-09-30T18:40:30.470 に答える
0

クラスが変更されない適切な文字列フィールドを保持している場合は、それを使用できます。

// the id property must be a String, immutable and unique for each instance!
myMap.put(a.getId(), a);
于 2012-09-30T18:38:23.640 に答える
0

objectのキーとしていずれかを作成する場合HashMapそのオブジェクトはimmutable.. である必要があります。なぜなら、それらを..HashMap

挿入後にキーが変更された場合、挿入された値を見つけることができなくなることを想像してみてください..

しかし、あなたの鍵がimmutableの場合、誰かがあなたの鍵を変更しようとすると、彼は実際には自分用に新しい鍵を作成しますが、あなたはまだあなたのものを持っています..

Stringこれは、キーとして使用する場合に発生しますHashMap(変更できません)。したがって、オブジェクトをキーにしたい場合は、クラスを String のサブクラスにするか (それはできません) )、または、クラスを不変にするだけです..

于 2012-09-30T18:40:04.900 に答える