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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王安琪 中级黑马   /  2013-6-7 23:02  /  5953 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王安琪 于 2013-6-12 22:12 编辑

泛型应该什么时候使用,除了在集合的存取要保证存取的数据类型一致外,还在什么情况下使用?
可否多说几个情况?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
泛型是JDK 5.0后出现新概念,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
好处不仅在于减少代码量,还在于一提供了编译时期数据类型的检查功能,可以提前预知错误的发生,增加代码安全性,二是减少了强制类型转换。
泛型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型类就不说了,你用的集合就是泛型类的一种。
abstract class BaseBean{}  

Interface A<T extends BaseBean>{
        public T doSomething();  
}   
class IA   Impl implements IA<ChildBean> {
       public ChildBean doSomething(){
               return new ChildBean();  
       }
}
这样当你调用这个实现的时候就能明确地得到返回的对象类型,清楚明了,这就是泛型接口的使用.
其实我们平时一直在用的 Iterable也是,你可以去看下。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
加油楼主
回复 使用道具 举报
泛型不是必需的,但是java强烈推荐使用集合框架时使用泛型,它可以有效地避免数据类型不同时引发的各种问题,提高处理速度,方便使用
回复 使用道具 举报
为什么会产生泛型呢?
比如:一个公司里面有经理和员工
一个数组里面装着多种类型的对象,此时我要判断到底是经理还是员工

有没有一种可以不用判断的呢?有没有一种可以只装员工,而非员工的就报错了???

此时就出来了一个叫泛型的东西,这就相当在数组上进行限制:
规定只能装员工List<worker> l = new List<worker>();
如果你要装错了,装的是非员工类,就报错。
如:l.add(new Manager());此时直接报错,这样就限制了数组的类型了
同时我们要获取就员工就很简单了
Worker w = l[0];  不需要判断了并强制转换了,因为它已经限制了只能是Worker类型的对象了
这就是泛型的好处,应该懂了吧?

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马