![](/img/trans.png)
[英]Why does the following block of simple Java code (print Hello World ) raise compilation error?
[英]Why is the following java code leads to compilation error
我目前正在努力使我的代码包含更多泛型。 我遇到了一个看起来很复杂的编译错误,但是在以下代码中我可以将其减少到一个等效的错误:
List<List<?>> a = new ArrayList<List<Integer>>();
为什么会这样? 我该如何解决?
具有不同类型参数的泛型类的实例不相关,即,即使String
是Object
的子类型, List<String>
不是List<Object>
的子类型,并且即使List<Integer>
是List<?>
的子类型。 List<?>
, List<List<Integer>>
不是List<List<?>>
的子类型。
也许您正在寻找
List<? extends List<?>> a = new ArrayList<List<Integer>>();
两侧必须匹配内部List
:
List<List<?>> foo = new ArrayList<List<?>>();
foo.add(new ArrayList<Integer>());
尽管这很愚蠢,因为您刚刚定义了“可以容纳任何内容的列表”的列表,并且除非您确切地知道外部列表中的每个列表,否则以后由于类型擦除而无法对其进行区分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.