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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© "O_忆_O 中级黑马   /  2013-7-12 23:50  /  1084 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 "O_忆_O 于 2013-7-14 00:43 编辑

有人能解释一下泛型为什么要两边类型一样吗?
视频里面听了几遍还是不是很懂.
  1. ArrayList<Object> list = new ArrayList<String>();
  2. ArrayList<String> list = new ArrayList<Object>();
复制代码
这两个都是不行的

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

7 个回复

倒序浏览
泛型的安全机制使运行时错误转移到了编译时期,主要是为了避免强转时出现的麻烦。

数据类型<尖括号里面我确定了是String类型> 变量名  ;;;当我要new一个对象的时候,却不是我定义好的String类型,虽然Object是GOD,当却不是我要的那个范围。。。自然不让通过

其实这个可以打个比喻~我希望我定义的集合范围是半径为2的圆。可我创建的对象,也就是我真正定义的集合范围是半径为4的圆。用我们平时的眼光去看待,4那么大的圆包含了2,情理之中,可我定义的范围却不需要那么多,多出的部分是我不需要的。所以就会不安全,不安全就会报错。。

而我们在泛型中会使用到Object的时候  是数据类型不确定的时候  为了方便扩展才使用!但并不是说两边可以一个Objct,一边是别的类型,它是定义一个范围,让我们更方便和安全使用。

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
“泛型类型”包括构造类型和泛型类型定义。“约束”是加在泛型类型参数上的限制。当你限制一个类型后,准备创建对象,但object并不是所需要的类型,就会出现无法得到想要类型的情况。
object的使用,是在不确定类型的情况下,一般多用于多态上的。
回复 使用道具 举报
白_蓝(八公) 发表于 2013-7-13 01:41
泛型的安全机制使运行时错误转移到了编译时期,主要是为了避免强转时出现的麻烦。

数据类型 变量名  ;; ...

差不多有些明白了!谢谢
回复 使用道具 举报
通俗的来讲,假如你左边是动物,右边是猫,这样,你左边想弄一个动物园,但是右边接收的只有猫,肯定不行。
然后,你左边是猫,右边是动物,你想办个猫宠物店,结果里面有别的动物,也是不行的。
回复 使用道具 举报
java泛型就是为了解决类型转换的安全问题的。还有就是可以自定义泛型类和方法来减少代码的重复。
回复 使用道具 举报
a给1号纸箱上面贴了一个标签上面写着“装衣服”,
a告诉b说: 你去打一桶水来倒进1号箱里面,
b把水打来了,往纸箱里面倒的时候傻眼了。纸箱能装水吗? 于是他就开始思考,一直思考,一直思考,一直。。。。。。。。b疯了!!(异常了!!!!!!)
所以两边都要一样才行。
回复 使用道具 举报
实在不好意思!!!哥们就是这么理解泛型的  呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马