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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 磊子 中级黑马   /  2015-9-14 23:23  /  291 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型:
        概述:泛指某种类型。
        好处:
                1、提高安全性。(把运行期异常转移到编译期)
                2、不用强转了。
        泛型的格式:
                <>    <>中的数据类型必须是引用类型
        注意事项:
                1、前后泛型必须一致,或者后边的泛型可以不写。
                        ArrayList<String> list = new ArrayList<String>();
       
        案例:ArrayList存储字符串、自定义对象并遍历(泛型版)

        泛型的由来:
                以前的集合能存的是Object类型的数据,这样什么类型的数据都可以存进集合了。
                但是好多时候我们要做类型转换,这样就不安全。而泛型就是来解决这个问题的

        泛型类:
                格式:
                        在类名后边加泛型即可。
                        class Person<T> {  //type

                                public void show(T t){
                               
                                }

                                public <V> void method(V v){
                               
                                }

                                public static <B> void function(B b){
                               
                                }
                       
                        }

        泛型方法:
                注意:方法的泛型最好和类型的泛型一致。
                分类:
                        非静态方法:
                                1、泛型可以与类的泛型一直,这样不用定义自己的泛型。
                                                public void show(T t) { }
                                2、泛型与类的泛型不一致,需要定义自己的泛型。
                                                public <V> void method(V v) {  }

                        静态方法:
                                必须定义自己的泛型,为什么?
                                        因为静态成员是随着类的加载而加载的,类加载的时候,对象还没有创建。
                                格式:
                                        public static <B> void function(B b){ }


        泛型接口:
                格式:
                        interface Smoke<T>{
                                void smoke(T t);
                        }
                实现方式:
                        1、用普通类来实现。
                                class Demo1 implements Smoke<Student> {   //较常用

                                        public void smoke(Student s){
                                       
                                        }
                                }

                                class Demo2 implements Smoke<Teacher> {

                                        public void smoke(Teacher t){
                                       
                                        }
                                }

                        2、用泛型类来实现。
                        class Test<T> implements Somke<T> {
                                public void somke(T t){
                               
                                }
                        }


        通配符:<?>
                向下限定
                        ? extends E  E及其子类

                向上限定
                        ? super E   E及其父类

0 个回复

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