A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-文鸿利 中级黑马   /  2013-8-19 11:23  /  977 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码如下:
              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则是通过使用通配符的方式创建出来的,所以不能改变集合中的值。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马