Java泛型

目录

泛型定义

泛型的优点

泛型的使用

泛型类

泛型接口

泛型方法

泛型通配符

上界通配符

下界通配符


泛型定义

泛型(Generics)是在JDK1.5中推出的,其主要目的是可以建立具有类 型安全的集合框架,如链表、散列映射等数据结构。

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢? 顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参), 然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中, 操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

泛型的优点

Java泛型的主要目的是可以建立具有类型安全的数据结构,如链表、散列表等数据结构,最重要的一个优点就是:在使用这些泛型类建立的数据结构时,不必进行强制类型转换,即不要求进行运行时类型检查。JDK1.5是支持泛型的编译器,它将运行时的类型检查提前到编译时执行,使代码更安全。Java推出泛型的主要目的是为了建立具有类型安全的数据结构,如链表、散列映射等。

泛型的使用

泛型类

  • 泛型类概述:把泛型定义在类上
  • 定义格式:class 名称<泛型列表>
public class 类名 <泛型类型1,...> {
    
}
复制代码
  • 使用泛型类声明对象
  • 定义格式:
Cone<Circle> coneOne;
coneOne =new<Circle>(new Circle());

泛型接口

  • 泛型接口概述:把泛型定义在接口
  • 定义格式:
public interface 接口名<泛型类型> {
    
}
复制代码

泛型方法

  • 泛型方法概述:把泛型定义在方法上
  • 定义格式:
public <泛型类型> 返回类型 方法名(泛型类型 变量名) {
    
}
复制代码

泛型通配符

常用T,E,K,V,?

  ? 表示不确定的 java 类型
  T (type) 表示具体的一个java类型
  K V (key value)
  分别代表java键值中的Key Value
  E (element) 代表Element

<? extends T> 上界通配符

<? extends T>表示的是类型的上界【包含自身】,因此通配的参数化类型可能是T或T的子类。

使用关键字extends来实现,实例化时,指定类型实参只能是extends后类型的子类或其本身。

这样就确定集合中元素的类型,虽然不确定具体的类型,但最起码知道其父类。然后进行其他操作。

//Cat是其子类
    List<? extends Animal> list = new ArrayList<Cat>();
复制代码

<? super T> 下界通配符

下界通配符<? super T>表示的是参数化类型是T的超类型(包含自身),层层至上,直至Object

使用关键字super来实现,实例化时,指定类型实参只能是extends后类型的子类或其本身

//Animal是其父类
List<? super Cat> list = new ArrayList<Animal>();
复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值