泛型的学习

文章目录

泛型

泛型的概念

  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:使用时指定的类型不能小于操作的类,即>=
相关推荐
盐焗西兰花13 分钟前
鸿蒙学习实战之路:Tabs 组件开发场景最佳实践
学习·华为·harmonyos
_Kayo_27 分钟前
Next.js 路由 简单学习笔记
笔记·学习·next.js
盐焗西兰花32 分钟前
鸿蒙学习实战之路 - 瀑布流操作实现
学习·华为·harmonyos
酒尘&43 分钟前
Hook学习-上篇
前端·学习·react.js·前端框架·react
qq_381454991 小时前
Python学习技巧
开发语言·python·学习
im_AMBER1 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
van久2 小时前
.Net Core 学习: Razor Pages -- EF Core简介
学习·.netcore
以孝治家行动2 小时前
学习无止境 行动在进行—以孝治家义工暖心守护独居老人
学习·以孝治家
Radan小哥4 小时前
Docker学习笔记—day011
笔记·学习·docker
星域智链4 小时前
AI加持日常小节日:让每一份心意都精准升温✨
人工智能·科技·学习·生活·节日