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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuli2039 中级黑马   /  2014-8-22 19:53  /  1058 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


如大家所知:集合的好处是可以装不同的对象类型,而数组中只能装同一种。
如果我们在集合上定义泛型:例如ArrayList<Integer> al = new ArrayList<Integer>(); 这时我们就只能往里边存储Integer对象了,这种情况好像没什么意义啊,直接搞个Integer数组不是简单些么?
我试了试直接定义通配符<?>和<? extends Object>都不能编译通过。
然后又试了<Object>,这样倒是可以存储任意对象了,但这和没加泛型好像是一个效果,完全多此一举的感觉,大家对这个问题是怎么理解的?
public class Fanxing {
        public static void main(String[] args) {
                ArrayList<Object> al = new ArrayList<Object>();
                al.add("abc");
                al.add(2);
                al.add(true);
               
                for(Object a : al){
                        System.out.println(a);
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
付江涛 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
数组功能太少,集合可以增删改查;而且加入泛型,可以让你在编译时就发现错误,比如规定的是Integer,你可能误写添加成String类型的,而不至于等到运行才发现错误
回复 使用道具 举报
dreamseekerkun 发表于 2014-8-22 19:59
数组功能太少,集合可以增删改查;而且加入泛型,可以让你在编译时就发现错误,比如规定的是Integer,你可 ...

我的意思是,既然集合的优点是 可以存储不同各类型的对象,如果我们定义泛型了,岂不是丢弃了这个优点?
实际开发中用集合存储不同类型的对象这种应用场景多吗?
回复 使用道具 举报
yuli2039 发表于 2014-8-22 20:04
我的意思是,既然集合的优点是 可以存储不同各类型的对象,如果我们定义泛型了,岂不是丢弃了这个优点?
...

    集合的优点是可以存储不同类型的对象这句话你理解错了,不是因为能存储各种类型的对象就鼓励使用者往同一个集合里丢各种毫无关联的对象,集合的出现时为了更好的支持我们对大量同一类型数据的操作,就像你家衣柜一样,你怎么不往里面放书,放餐具呢?  一个道理。
回复 使用道具 举报
怀念黑海岸 发表于 2014-8-22 20:21
集合的优点是可以存储不同类型的对象这句话你理解错了,不是因为能存储各种类型的对象就鼓励使用者往 ...

懂了 3QQQQQQQQQQQ
回复 使用道具 举报

最主要的原因还是因为你吧一堆不同类型的数据存入同一个集合中后,你怎么使用他们呢?即使你能取出一个对象,但是然后呢?你知道通过这个取出的对象进行什么样子的操作吗?不能,因为你连他的类型的搞不清楚。更别提如何使用方法了,其实泛型个人觉得更像是一种安全机制,他吧产生在程序运行时期的错误转移到编译期来了,我们通过使用泛型就能明确规定我要操作的具体数据类型,不满足这个条件的你都无法完成编译。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马