黑马程序员技术交流社区

标题: 泛型 -- JDK1.5的新特性总结 [打印本页]

作者: myworkspace    时间: 2015-10-30 23:45
标题: 泛型 -- JDK1.5的新特性总结
格式:
                <引用数据类型>
        定义:
                明确数据类型的工作放到创建对象或者调用方法时的特殊类型。
               
        好处:
                1、把运行期异常提前到编译期,保证数据的一致,提高了数据的安全性。
                2、消除了黄色警告线。
       
        那么在JDK1.5之前怎么实现参数的任意化呢?
                是通过接收Object类型的参数实现的。因为任意类直接或间接继承自Object。
                但这样实现的缺点就是,还是不能保证数据类型的安全一致。
                Object obj1 = new Student();
                Object obj2 = new Teacher();
                上面两个对象都声明为Object类型,那获取元素的时候到底该如何转型呢?还是存在问题。
       
        泛型应用:
                泛型类 -- 把泛型加在类上,明确数据类型的工作放到创建对象的时候。
                泛型接口
                泛型方法 -- 把泛型加在方法上(返回值的前面),明确数据类型的工作放到调用方法的时候。
               
        泛型擦除:
                public void show(ArrayList<Object> list) { }

                public void show(ArrayList<Object> list){ }

                /*
                 * 上述两个方法是不会形成方法的重载的,会报方法已存在的错误。 原因:泛型擦除。
                 * 泛型是1.5中引入的一个新的概念,由于不用进行强制转换类型了,所以具有较高的安全性和易用性。
                 * 因为泛型其实只是在编译器中实现的而虚拟机并不认识泛型,所以要在虚拟机中将泛型类型进行擦除。
                 * 也就是说,在编译阶段使用泛型,运行阶段取消泛型,即擦除。
                 * 擦除是将泛型类型以其父类代替,如String变成了Object等。
                 * 其实在使用的时候还是进行带强制类型的转化,只不过这是比较安全的转换,因为在编译阶段已经确保了数据的一致性。
                 */
               
        泛型通配符:
                <?> -- 任意类型
                <? extends E> -- 向下限定,可以接收E及其子类
                <? super E> -- 向上限定,可以接收E及其父类
作者: damofeixue    时间: 2015-10-31 12:33
总结的很详细呀




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