0

我有两个对象如下

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();

如何使用泛型在 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是通配符。它代表“某种未知类型,我们唯一知道的是它是 Object 的子类型”。在声明中很好,但你不能实例化它,因为它不是一个实际的类型。

于 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 回答