Java 参数通配符
Java wildcard for parameter
有没有办法实现这样的目标?这段代码和我想实现的类似。
public static void main(String[] args){
MultiCall(new HashMap<Integer, Integer>(){{
put(1, 2);
put(3, 4);
}}, (i, j) -> {
System.out.println(i + j);
});
}
public void MultiCall(HashMap<?, ?> map, BiConsumer<? super ?, ? super ?> func){
...
map.forEach(func);
}
这里的问题是BiConsumer,我需要wildcard是HashMap的wildcard的super
linter 是这么说的
Required type: BiConsumer <? super capture of ?, ? super capture of ?>
但是,在执行 ? super ?
后,表示它需要是一个类型。但是Type目前是一个通配符。
您需要通过为地图的键和值类型添加类型参数来使您的方法通用:
public <K, V> void MultiCall(
HashMap<K, V> map,
BiConsumer<? super K, ? super V> func){
有没有办法实现这样的目标?这段代码和我想实现的类似。
public static void main(String[] args){
MultiCall(new HashMap<Integer, Integer>(){{
put(1, 2);
put(3, 4);
}}, (i, j) -> {
System.out.println(i + j);
});
}
public void MultiCall(HashMap<?, ?> map, BiConsumer<? super ?, ? super ?> func){
...
map.forEach(func);
}
这里的问题是BiConsumer,我需要wildcard是HashMap的wildcard的super
linter 是这么说的
Required type: BiConsumer <? super capture of ?, ? super capture of ?>
但是,在执行 ? super ?
后,表示它需要是一个类型。但是Type目前是一个通配符。
您需要通过为地图的键和值类型添加类型参数来使您的方法通用:
public <K, V> void MultiCall(
HashMap<K, V> map,
BiConsumer<? super K, ? super V> func){