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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DDV 中级黑马   /  2016-7-20 23:23  /  604 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1)为什么会出现泛型?
                因为集合存放的数据类型不固定,故往集合里面存放元素时,存在安全隐患,
                如果在定义集合时,可以想定义数组一样指定数据类型,那么就可以解决该类安全问题。
                JDK1.5后出现了泛型,用于解决集合框架的安全问题。
                泛型是一个类型安全机制。
        (2)泛型定义格式:通过<>来定义要操作的引用数据类型
                ArrayList<String> al = new ArrayList<String>;
        (3)泛型的好处:
                **将运行时期出现的ClassCastException(类型转换异常)问题转移到编译时期;
                **避免了强制转换的麻烦
        (4)什么时候定义泛型?
                泛型在集合框架中很常见,只要见到<>就要定义泛型。其实<>就是用来接收类型的。
                当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可
        (5)泛型的形式
                **泛型类:即自定义泛型类
                        A:当类中要操作的引用数据类型不确定时,早起定义Object来完成扩展,现在定义泛型来完成
                        B:局限性:泛型类定义的泛型,在整个类中有效,如果该泛型类的方法被调用,
                           当泛型类的对象明确要操作的类型后,所有要操作的类型就被固定。
                **泛型方法:泛型放在返回值前面,修饰符的后面
                        A:为了避免泛型类的局限性,让不同方法可以操作不同的类型,而且类型还不确定,
                          则可以将泛型定义在方法上
                        B:特殊之处:静态方法不可以反问类上定义的泛型
                          如果静态方法操作的应用数据类型不确定,可以讲泛型定义在静态方法上
                **泛型接口:
                        当泛型定义在接口上时,则子类中要指定实现接口类型,同时还可以子类也可以定义为泛型类
        (6)泛型的高级应用:?通配符
                **当指定两种泛型的集合,则迭代时也要定义两种泛型的迭代器,麻烦,此时可通过将迭代器的泛型
                  改为?,如Iterator<?> it=al.iterator();
                **两种泛型限定
                        向上限定: ? extends E  ;E可以接收E类型或者E的子类
                        向下限定: ? super E  ;E可以接收E类型或者E的父类

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马