A a = new A(); //classA { }
HashMap<String, Object> hm = new Hashmap<String,Object>();
hm.put("A", a);
私の質問は、同じ宣言に「A」の代わりにオブジェクト自体を配置するにはどうすればよいですか?
hm.put(`a??`, a);
あなたはそれをすることはできません.言語はそれを禁止しています. はJavaのように宣言されているため、クラスが不可能なA
サブクラスである場合にのみ可能です。String
String
final
インタビューの質問に関して: 宣言に選択されたジェネリック型パラメーターのため、それは不可能です。詳細については、Bounded Type Parametersを参照してください。
A a = new A(); //classA { }
Map<A, A> hm = new Hashmap<A, A>();
hm.put(a, a);
しかし、私は置く意味がわかりませんa->a
クラスが変更されない適切な文字列フィールドを保持している場合は、それを使用できます。
// the id property must be a String, immutable and unique for each instance!
myMap.put(a.getId(), a);
object
のキーとしていずれかを作成する場合、HashMap
そのオブジェクトはimmutable
.. である必要があります。なぜなら、それらを..HashMap
挿入後にキーが変更された場合、挿入された値を見つけることができなくなることを想像してみてください..
しかし、あなたの鍵がimmutable
の場合、誰かがあなたの鍵を変更しようとすると、彼は実際には自分用に新しい鍵を作成しますが、あなたはまだあなたのものを持っています..
String
これは、キーとして使用する場合に発生しますHashMap
(変更できません)。したがって、オブジェクトをキーにしたい場合は、クラスを String のサブクラスにするか (それはできません) )、または、クラスを不変にするだけです..