Java嵌套通配符generics将无法编译
我在Javagenerics中遇到有界嵌套通配符的问题。
这是一个常见的情况:
public void doSomething(Set set) {} public void callDoSomething() { Set set = new HashSet(); doSomething(set); }
这是标准的Javagenerics,工作正常。
但是,如果通配符变为嵌套,则它不再起作用:
public void doSomething(Map<String, Set> map) {} public void callDoSomething() { Map<String, Set> map = new HashMap<String, Set>(); doSomething(map); }
这会导致编译器错误。
我尝试了各种演员表和通配符排列,但我无法使其正常工作。 我不记得以前看过这个问题了,多年来我一直在使用仿制药。 我是否太累了,错过了一些明显的东西?
所以问题是, doSomething
可以实现为:
public void doSomething(Map> map) { Set set = ...; map.put("xyz", set); }
你需要决定你的意思。
可能类似于:
public void doSomething(Map> map) {}
这对你有用:
public void doSomething(Map> map) {}
使代码工作创建HashMap为:
Map> map = new HashMap>();