如何将两种不同类型的地图传递给方法?

时间:2013-08-09 17:53:40

标签: java methods map

我有两张这样的地图:

Map<Long, MyObject> myMap1 = new HashMap<Long, MyObject>()

Map<Integer, Set<Long>> myMap2 = new HashMap<Long, Set<Long>>()

如何在不传递通用Object或重载方法的情况下,仅将这两种类型的地图的地图传递给方法?

public void method() {
    //method for maps
}

3 个答案:

答案 0 :(得分:1)

如果您想在同一方法中使用它们,则只能使用不同类型的共同点。

有关

Map<Long, MyObject> myMap1 = new HashMap<Long, MyObject>();
Map<Integer, Set<Long>> myMap2 = new HashMap<Integer, Set<Long>>();

他们的共同点是:

void method(Map<? extends Number, ? extends Object> map) {
    Number key = ?? (you know it is a Number but that's not helping much)
    Object object = map.get(key);
    object.IDonTKnowWhatTypeYouAre();
}

这可能没用,因为你基本上对方法中可以使用的类型一无所知。

答案 1 :(得分:0)

public void method1(Map<Long, MyObject> map) {
    //method for map
}

public void method2(Map<Integer, Set<Long>> map) {
    //method for map
}

您可以使用method1(myMap1)method2(myMap2)来调用它。

答案 2 :(得分:-1)

您可以为没有通用参数或Map的擦除类型Map<?, ?>声明方法,但会丢失通用参数的类型安全性。因此编译器会给你一些警告。

因此,您通常应该避免这种情况。