黑马程序员技术交流社区

标题: 泛型应该什么时候使用? [打印本页]

作者: 王安琪    时间: 2013-6-7 23:02
标题: 泛型应该什么时候使用?
本帖最后由 王安琪 于 2013-6-12 22:12 编辑

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

作者: a303466738    时间: 2013-6-7 23:22
泛型是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也是,你可以去看下。


作者: 袁梦希    时间: 2013-6-8 07:33
加油楼主
作者: 逝者轨迹    时间: 2013-6-8 12:18
泛型不是必需的,但是java强烈推荐使用集合框架时使用泛型,它可以有效地避免数据类型不同时引发的各种问题,提高处理速度,方便使用

作者: Changer_s    时间: 2013-6-8 17:00
为什么会产生泛型呢?
比如:一个公司里面有经理和员工
一个数组里面装着多种类型的对象,此时我要判断到底是经理还是员工

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

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

作者: 袁梦希    时间: 2013-6-12 18:58
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2