泛型就是在集合中规定只能放一种对象。 如: List<String> list = new ArrayList<String>();
就是规定里面放什么类型。。 当然Map就对应的有key和value了。 Map<String,Integer> m ;
hehe 楼上说的不对吧 List<Object> list = new ArrayList<Object>(); 请问,你能把你定义的类add吗?????显然不行 但是,List<? extends Object> list = new ArrayList<<? extends Object>(); 可以随便add吧!!!!!!
没有泛型的时候得这样 List myList = new ArrayList(); myList.add("first"); String str = (String)myList.get(0); 取得时候要强制转换一下 有了泛型以后就不用了 List<String> myList = new ArrayList<List>(); myList.add("first"); String str = myList.get(0); 直接取出来就是String.
你是错误的吧。 据我所知 List <? extends Object> list = new ArrayList < <? extends Object>();这种语法无法add。
范型方便了编译时类型检查,有什么不好的地方吗? 和java一直以来坚持的安全思想是一致的。
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处是安全简单。
List <? extends Object> list = new ArrayList < <? extends Object>(); 好像这么new都是错的。 这种声明方法只是为了调用方法的时候方便,可以说是为了支持多态性,但add的时候就麻烦了。感觉不算是比较好的语法。
就是给个标准,让该集合里只能装范型规定的类型的对象 比如ArrayList<String> li = new ArrayList<String>(); 表示声明的这个LI集合中只能放STRING类型的对象进去,你放别的类型的对象是放不进去的,要报错 而且你从集合里把他取出来的时候直接就是一个STRING 对象了,不用去做什么强转的工作了 用起来比较方便
楼主【peijiafu】截止到2008-07-27 15:19:20的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
如:
List<String> list = new ArrayList<String>();
当然Map就对应的有key和value了。
Map<String,Integer> m ;
楼上说的不对吧
List<Object> list = new ArrayList<Object>();
请问,你能把你定义的类add吗?????显然不行
但是,List<? extends Object> list = new ArrayList<<? extends Object>();
可以随便add吧!!!!!!
就是规定了数据类型后不能再改变,和FINAL有点象
我的理解就是泛型规定了add哪种类型,不就这样么。
当然list<? extends Object>就可以随便放了。
就是随便放,那你放了Integer,又放String,Boolean,那这个list还有什么作用啊。只是存了,但怎么取啊。
其实里面就是放类的实例还有他的子类的实例,是这样么
List myList = new ArrayList();
myList.add("first");
String str = (String)myList.get(0);
取得时候要强制转换一下
有了泛型以后就不用了
List<String> myList = new ArrayList<List>();
myList.add("first");
String str = myList.get(0);
直接取出来就是String.
据我所知
List <? extends Object> list = new ArrayList < <? extends Object>();这种语法无法add。
和java一直以来坚持的安全思想是一致的。
好像这么new都是错的。
这种声明方法只是为了调用方法的时候方便,可以说是为了支持多态性,但add的时候就麻烦了。感觉不算是比较好的语法。
比如ArrayList<String> li = new ArrayList<String>();
表示声明的这个LI集合中只能放STRING类型的对象进去,你放别的类型的对象是放不进去的,要报错
而且你从集合里把他取出来的时候直接就是一个STRING 对象了,不用去做什么强转的工作了
用起来比较方便
使用强制类型装换的时候,出问题也只能到运行的时候才发现,而通过反省就可以尽早的发现问题并解决。
楼上说的不对吧
List <Object> list = new ArrayList <Object>();
请问,你能把你定义的类add吗????? 当然可以,你不晓得所有的类都是继承自OBJECT唆,只要是这样写的,所有的类都可以ADD()进去哈