什么是泛型

什么是泛型

不确定的数据类型

从概念上讲就是一个预定义数据类型(占位符)

## 泛型的好处:

* 代码更加简洁【不用强制转换,在编写集合的时候,就限定了类型】
* 程序更加健壮【只要编译时期没有警告,那么运行时期就不会出现ClassCastException异常】

泛型必须是包装类,用基本数据类型,int会发生异常,int 没有null。

泛型集合

Object(没意义,特殊情况除外) String Integer

## 二、泛型类

泛型标识:本质就是一个占位符

T:通用泛型类型

E:集合元素泛型类型list<E>

K:映射-键 泛型类型

V:映射-值 泛型类型

### 从泛型类派生子类:

子类:也叫派生类

父类: 超类 基类

如果子类和 父类泛型标识不一样,会爆红

子类的泛型标识可以有多个,父类的泛型标识只能有一个

子类的泛型标识可以有多个,创建对象的时候必须指定扩展的类型

### 三、泛型接口

如果实现类不是泛型类,接口要明确数据类型

## 四、泛型方法

泛型方法和泛型类的区别:

泛型类:是在实例化类的时候指明泛型的具体类型

泛型方法:是在调用方法的时候指明泛型的具体类型

定义语法:

1、public与返回值类型中间的<T>非常重要,可以理解为声明此方法为泛型方法。

2、只有在泛型列表中声明了泛型标识的方法才是泛型方法

3、<T>表明该方法将使用泛型类型T

4、与泛型类的定义一样,此处T可以写为任意标识

泛型方法:就是将方法参数类型中的泛型,提前在前面声明,必须用<>包起来。

​ 修饰符 <泛型标识> 返回值类型 方法名(形参){

​ 方法体

}

五、泛型通配符

泛型通配符一般是使用""?"代替具体的类型实参

泛型通配符上限:类/接口<? extends 实参类型>

泛型通配符下限:类/接口<? super 实参类型>

### 六、泛型擦除

泛型信息只存在于代码编译阶 段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,

List的三个子类:

ArrayList: 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。

Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。

LinkedList: 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。

### 桥接方法:

在接口后面定义了泛型标识,实现接口类重写接口方法,把泛型标识T转换成了Integer。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值