黑马程序员技术交流社区

标题: 在泛型中使用通配符形式 [打印本页]

作者: 黑马-文鸿利    时间: 2013-8-19 11:23
标题: 在泛型中使用通配符形式
代码如下:
              List<String> l1=new ArrayList<String>();//实例化一个ArrayList对象
              l1.add("成员");//在集合中添加内容
              List<?>  l2=l1;//使用通配符
              List<?>   l3=new  LinkedList<Integer>();
              System.out.println(l2.get(0));//获取集合中第一个值
               List<?>类型的对象可以接受String类型的ArrayList集合,也可以接受Integer类型的LinkedList集合。也许会有人疑问,List<?>l2=l1语句与List l2=l1存在何种本质区别?这里需要注意的是,使用通配符声明的名称实例化的对象不能对其加入新的信息,只能获取或删除。例如:
             l1.set(0,"成员改变");//没有使用通配符的对象调用set()方法
             //l2.set(0,"成员改变");//使用通配符的对象调用set()方法,不能被调用
             //l3.set(0,1);
              l2.get(0);//可以使用l2的实例获取集合中的值
               l2.remove(0);//根据键名删除集合中的值
              从上面可以看出,由于对象l1是没有使用A<?>这种形式初始化出来的对象,所以它可以调用set()方法改变集合中的值,但l2与l3则是通过使用通配符的方式创建出来的,所以不能改变集合中的值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2