java泛型之泛型通配符具体是啥作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java泛型之泛型通配符具体是啥作用?相关的知识,希望对你有一定的参考价值。
看图,可以解释下为什么吗?
Java中不允许嵌套泛型的内层通配符?匹配一个具体的类型,因为这可能破坏类型安全。这样做是可以的:
List<?> list = new ArrayList<Integer>();
而这样做是不可以的:
List<List<?>> list = new ArrayList<List<Integer>>();追问
可以可以 你这个回答比较服众 ,但是我还想追问下,java为什么规定不可以嵌套泛型的内层通配符啊? 如果允许会造成什么后果呢?
追答如果允许第二种写法,那么就会出现下面的问题:
List> list = new ArrayList>();
List sublist = new ArrayList();
list.add(sublist);
list.get(0).add(new Object());
结果是一个Object类型的对象被添加到了List中,破坏了类型安全。
为什么第一个也是泛型通配符预定义,实际传入时再确定就可以,第二种就不行了呢?不就是多层数据结构吗?怎么就编译不通过了呢?
以上是关于java泛型之泛型通配符具体是啥作用?的主要内容,如果未能解决你的问题,请参考以下文章