我有两张这样的地图:
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
}
答案 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<?, ?>
声明方法,但会丢失通用参数的类型安全性。因此编译器会给你一些警告。
因此,您通常应该避免这种情况。