Java 如何将两种不同类型的映射传递给一个方法?

Java 如何将两种不同类型的映射传递给一个方法?,java,methods,map,Java,Methods,Map,我有两张这样的地图: Map<Long, MyObject> myMap1 = new HashMap<Long, MyObject>() Map<Integer, Set<Long>> myMap2 = new HashMap<Long, Set<Long>>() 您可以为不带泛型参数的擦除类型Map或Map声明方法,但将失去泛型参数的类型安全性。因此编译器会给你一些警告 因此,您通常应该避免这种情况。公共无效方法1(

我有两张这样的地图:

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

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

您可以为不带泛型参数的擦除类型
Map
Map
声明方法,但将失去泛型参数的类型安全性。因此编译器会给你一些警告

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

公共无效方法1(映射){
public void method1(Map<Long, MyObject> map) {
    //method for map
}

public void method2(Map<Integer, Set<Long>> map) {
    //method for map
}
//地图绘制方法 } 公共无效方法2(地图){ //地图绘制方法 }

您可以使用
method1(myMap1)
method2(myMap2)
调用它。如果您想在同一方法中使用不同类型的通用方法,则只能使用它们

为了

Map myMap1=newhashmap();
Map myMap2=新的HashMap();
它们的最大共同点是:

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

void-method(Map)第二个应该是
HashMap
?哇,你们太苛刻了。使用这个方法有什么意义?方法不是问题,而是我如何将我的映射作为一个参数传递。完全没有理由否决投票而忽略这个方法。
public-void-method(Map-map1){…}
..?我的问题是如何控制哪些类型的映射被传递到方法而不重载该方法?如果
映射中的第二种类型有一些共性,那么您可以做
映射
,但由于它们没有…您基本上运气不佳,超出了
?扩展了对象
。没有更多的上下文来解释您想要什么对于您尝试执行的操作,我没有太多建议。在我的问题中,我问如何将映射(单数)传递给只接受我提供的两种类型映射的方法?您是说传递空值吗?您的问题不太清楚,但我编辑了答案,以了解您现在的理解。
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();
}