泛型的学习

文章目录

泛型

泛型的概念

  1. 所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时
  2. 从JDK1.5以后,Java引入了"参数化类型(Parameterized type)"的概念,允许我们在创建集合时再指定集合元素的类型,正如:List,这表明该List只能保存字符串类型的对象。
  3. JDK1.5改写了集合框架中的全部接口和类,为这些接口、类增加了泛型支持,从而可以在声明集合变量、创建集合对象时传入类型实参

在集合中使用泛型

  1. 集合接口或集合类在jdk5.0时都修改为带泛型的结构
  2. 在实例化集合类时,可以指明具体的泛型
  3. 指明完以后,在集合类或接口中凡是定义类或接口时,内部结构使用到类的泛型的位置,都指定为实例化的泛型类型 比如:add(E e) --->实例化后 add(Integer e)
  4. 注意点:泛型的类型必须是类,不能是基本数据类型,需要用到基本数据类型的位置,呐包装类替换
  5. 如果实例化时,没有指明泛型的类型.默认为java.lang.Object类型

自定义泛型结构

  • 关于自定义泛型类,泛型接口
  1. 如果实例化时,没有指明泛型的类型.默认为java.lang.Object类型
  2. 要求:如果大家定义类类是带泛型的,建议在实例化时要指明类的泛型
  3. 建议:实例化时指明类的泛型
  4. 由于子类在继承带泛型的父类时,指明了泛型的类型,则实例化子类对象时,不再需要指明泛型
java 复制代码
 @Test
    public void Test1(){
        
        Order order=new Order();
        order.setOrderT(123);
        order.setOrderT("ABC");

        
        Order<String> order1=new Order<String>("orderAA",1001,"ORDER" );
        order1.setOrderT("orderBB");
    }

泛型在继承上的体现

  • 如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G并不是G的子类型
java 复制代码
public void testGenericAndSubClass() {
Person[] persons = null;
Man[] mans = null;
// 而 Person[] 是 Man[] 的父类.
persons = mans;
Person p = mans[0];
// 在泛型的集合上
List<Person> personList = null;
List<Man> manList = null;
// personList = manList;(报错)
}

通配符的使用

复制代码
1. 使用类型通配符:?
  1. 写入list中的元素时,不行。因为我们不知道c的元素类型,我们不能向其中
    添加对象。唯一的例外是null,它是所有类型的成员。
  2. 有限制条件的通配符的使用
    • ? extends A:
      G<? extends A>可以作为G和G的父类的,其中B是A的子类
    • ? super A:
      G<? super A>可以作为G和G的父类的,其中B是A的父类
  3. 通配符指定上限
    上限extends:使用时指定的类型必须是继承某个类,或者实现某个接口,即<=
  4. 通配符指定下限
    下限super:使用时指定的类型不能小于操作的类,即>=
相关推荐
执笔论英雄8 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog8 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
Gary Studio11 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice11 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
lingggggaaaa11 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
PP东11 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
学电子她就能回来吗11 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
AI视觉网奇13 小时前
ue 角色驱动衣服 绑定衣服
笔记·学习·ue5
wdfk_prog14 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
ZH154558913116 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter