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

© Seven` 中级黑马   /  2014-9-19 18:12  /  1451 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.泛型(JDK 1.5才出现,1.5以前只能凭开发人员的安全意识 )
                        1)出现的原因:是为了解决程序的安全性,保证程序的一种安全机制
                        2)好处:使用泛型,避免了类型的强制转换,简化了代码
                                                        将程序的问题,由运行时期提前到了编译时期;
                                                        保证程序的安全性;

                        3)泛型的定义格式:##############################################
                                        集合类<数据类型> 变量 = new 集合类<数据类型>();
                                        注意:数据类型为引用数据类型,不能使用基本类型,前后两个数据类型必须保持一致

                        4)泛型是如何保证程序的安全性????????
                        ####将程序的问题,由运行时期提前到了编译时期;

                        5)ArrayList<E>   E == 变量,传递什么类型的数据,这个变量就是什么类型
                                ArrayList<String>   E ---> String

                        6)什么时候使用泛型?
                                使用一个类或接口的时候,定义方式带有<E>时,使用该接口或类时需要写<E>
2.自定义带泛型
                1)自定义带泛型的类(带泛型的方法)
                        A.直接在类上定义泛型,
                                clase 类名 <T>{}
                        B.带泛型的方法,在方法上定义与类上定义的泛型不同的变量;对象调用方法可以直接传递数据类型,无类型限制
                                        修饰关键字 <E> 返回值类型 方法名(){}
                                        修饰关键字为权限修饰符和static等
                        C.带泛型的静态方法,不能定义与类相同的泛型变量;
                       
                       
                2)自定义带有泛型的接口
                                1)实现类,实现接口,不实现泛型:不指定泛型,可以在创建对象时进行指定,比较灵活
                                                注意:List<E> 接口和他的实现类ArrayList<E> 使用的是实现类不实现泛型
                                        定义泛型接口:interface Face<E>
                                        定义接口的实现类:class FaceImp<E> implements Face<E>
                                       
                                2)实现类,实现接口,实现泛型:如果实现泛型,则该实现类只能传入指定类型对象
                                        定义泛型接口:interface Face<E>
                                        定义接口的实现类:class FaceImp implements Face<String>
                               
3.泛型的通配符和限定
                1)定义:        <?>  通配符,适合所有的类型,表示不明确的泛型
                                        使用通配符不能使用强转
                                       
                        迭代示例:
                        //使用通配符做集合迭代,可以迭代任何Collection类型的集合
                                private static void method(Collection<?> c){
                                        Iterator<?> it = c.iterator();
                                        while(it.hasNext()){
                                                System.out.println(it.next());
                                        }
                                }
               
               
                2)泛型的限定:通配符本身不知道是哪种类型,可以通过指定?的子父类关系来做类型的限定

                        格式:
                                <? extends E> 可以传递E类型,也可以传递E的子类类型,此格式为泛型的上限限定
                                <? super E> 传递E类型,传递E类型的父类类型,此格式为泛型的下限限定                
                                               
                        示例:
                                <? extends Company> 可以传递Company,也可以传递他的子类
====================我是可爱的分割线======================================
欢迎指正补充

0 个回复

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