Java SE 宋红康 days04-高级篇-泛型

1. 在集合中使用泛型:

  ① 泛型类型必须是类,不能是基本数据类型,要用包装类替换;

  ② 如果实例化时,没有指明泛型的类型,默认类型为 java.lang.Object 类型;

2. 如何定义 泛型类、泛型接口、泛型方法

  泛型类:子类在继承父类时,指明了泛型类型,则实例化子类对象时不需要再指明泛型了;

    注意

    a. 如果泛型不指定,均按照Object处理;

    b. 如果泛型结构式一个接口或抽象类,则不可创建泛型类的对象;

    c. 静态方法中不可以使用类的泛型(如异常类等)

    d. 声明一个泛型数组,必须用 T[ ]  arr = (T[ ]) new  Object[10];的形式

  泛型方法:在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系;

    a. 泛型方法所属的类是不是泛型类都没有关系;

    b. 泛型方法可以声明为静态的,泛型参数是在调用方法时确定的,并非是在实例化类时确定的;

3. 泛型在继承方面的体现

  通配符: ,类A时类B的父类,G<A>和G<B>没有关系,二者的父类是 G<?>;如:List<Object>、List<String> 的父类是 List<?>

  注意:对于 List<?> 类型的实例,就不能向其内部添加数据,除了添加 null 之外;

     允许读取数据,读取的数据类型为 Object;

4. 有限制条件的通配符的使用

  ?  extends  Person:G<?  extends  A> 可以作为 G<A> 和 G<B> 的父类,其中 B 是 A 的子类或本身(B ≤ A);

  ?  super  Person:G<?  super  A> 可以作为 G<A> 和 G<B> 的父类,其中 B 是 A 的父类或本身(B ≥ A);

  写数据:父类不能赋值给子类;读数据没有限制

posted @   LinxhzzZ  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示