【发布时间】:2011-08-23 20:42:19
【问题描述】:
以下代码可以编译,但如果我取消注释注释行,它不会,我很困惑为什么。 HashMap 确实扩展了 AbstractMap 并且声明 map 的第一行编译良好。
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, ? extends AbstractMap<String, String>> map = new HashMap<String, HashMap<String, String>>();
//map.put("one", new HashMap<String, String>());
}
}
而且,我知道“正确的方法”是这样的:
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String args[]) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
map.put("one", new HashMap<String, String>());
}
}
【问题讨论】:
标签: java generics inheritance types