0

私は次のように2つのオブジェクトを持っています

public class MyObject1 implements Serializable
{

private Long id;
... other properties and getters and setters
}

public class MyObject2 extends MyObject1
{
private String name;
...other properties and getters and setters
}

MyObject1 obj1 = new MyObject1();
MyObject2 obj2 = new MyObject2();

これら 2 つのインスタンスをジェネリックを使用して HashMap に追加するにはどうすればよいですか?

アップデート

MyObject1 と MyObject2 を同じマップに追加できるようにしたいと考えています。お気に入り

Map<Long, ? extends MyObject1> map;

これができるように

map.put(obj1);
map.put(obj2);

それが今より明確であることを願っています。

4

2 に答える 2

3

直接使用できますMap<Long, MyObject1>

Map<Long, MyObject1> map = new HashMap<Long, MyObject1>();
map.put(1l, new MyObject1());
map.put(2l, new MyObject2());

ノート:

? extends MyObject1ワイルドカードです。これは「未知のタイプであり、私たちが知っているのはオブジェクトのサブタイプだけです」の略です。宣言では問題ありませんが、実際の型ではないため、インスタンス化できません。

于 2012-05-27T08:47:22.347 に答える
1

idがキーであると仮定しましょう。これは次のようになります。

Map<Long, MyObject1> map = new HashMap<Long, MyObject1>();
map.add(obj1.getId(), obj1);
map.add(obj2.getId(), obj2);
于 2012-05-27T08:38:14.630 に答える