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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© suweifeng 中级黑马   /  2016-1-19 23:18  /  346 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.泛型概述ArrayList<String> a1=new ArrayList<String>();
  定义容器类型
  好处:将运行时期出现的问题转移到编译时期
        方便程序员解决问题。
        避免了强制转换的安全问题
  相对的迭代器:Iterator<String>it=a1.iterator()
  相对的比较接口:class ccc Implements Comparator<String>
2.通常在集合框架经常使用泛型
3.泛型类:class Utils<qq>{
                private qq q;
                public void setname(qq q){
                        this.q=q;                       
  }
                public qq getname(){
                        return q;                       
          }
  }
  主函数定义:Utils<worker> u=new Utils<worker()>;
                u.setname(new worker());
                wourker q=u.getname();
  当类中要操作的数据类型不确定的时候,早期定义Object来实现扩展
  现在通过
  泛型类定义的泛型,在整个类有效,如果被方法调用,那么泛类型的对象
  要操作的的具体类型等,所有要操作的类型都已经固定了。
  为了相同方法操作不同类型,可以泛型定义方法。
4.泛型方法public<T>void (T t){};传入什么类,操作什么对象。和集合相似
  可以在泛型类中定义泛型方法,泛型也定义在接口上
5.特殊之处,静态方法不可以访问类上的泛型,可以将泛型定义在方法上
6.泛型限定:(上限定)public static void pri(AtrayList<?extends person> a1){
  Iterstor<?> it=a1.iterator();}只接受person类及其继承person的子类
            (下限定)public static void pri(AtrayList<?super person> a1){
  Iterstor<?> it=a1.iterator();}只接受person类及其继承person的父类
  提高拓展性,但不能调用特有方法
  当子类继承父类方法并没有复写而用SUPER代替时,用泛型ArrayList<>定义子类时
  语句为ArrayList<子类名> a1=new ArrayList<父类名>();
  Comparator本身具备泛型接口,可直接定义父类接口提高拓展性

0 个回复

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