当前位置: 代码迷 >> J2SE >> 通配符泛型数组 不理解解决思路
  详细解决方案

通配符泛型数组 不理解解决思路

热度:182   发布时间:2016-04-24 02:22:35.0
通配符泛型数组 不理解
Java code
List<?>[] intArr=new ArrayList<?>[10];//这句是什么意思?是不是跟List[] intArr=new ArrayList[10]效果一样?List<Integer> intLst=new ArrayList<Integer>();    intLst.add(32);    List<String> strLst=new ArrayList<String>();    strLst.add("apple");    intArr[0]=intLst;    intArr[1]=strLst;


不懂。。。




------解决方案--------------------
楼主是不懂范型还是不懂那个“?”号。不懂范型的话可以网上搜索一下,至于ArrayList<?>中问号是一个类型通配符,是任何泛型 List 的父类型,所以您完全可以将 String,Integer等存储在其中。
------解决方案--------------------
List 类是 ArrayList 类的泛型等效类。
ArrayList是List的实现类,此外,实现了List接口的还有很多
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector 
都是List的实现类

建议去看看API,哪里相信比你来这里问好多了。
API名称:JDK_API_1_6_zh_CN.CHM
下载地址网上搜索下,多的是
------解决方案--------------------
探讨

同问:
List<?>[] intArr=new ArrayList<?>[10];//这句是什么意思?是不是跟List[] intArr=new ArrayList[10]效果一样?

------解决方案--------------------
List<?> 等效于List<? extends Object>,确定List 容器存储数据的类型

比如可写成List<? extends InputStream>

则在参数列表传递时你可以传递 存储类型为InputStream 子类对象的集合

Java code
    public static void test(){        te(new ArrayList<FileInputStream>());    }    public static void te(List<? extends InputStream> list)    {            }
  相关解决方案