Java中的泛型

泛型

语法

泛型的声明

Interface 接口 < T >{} 和 Class类 <K,V>{}

比如:List,ArrayList

说明:

  1. 其中,T、K、V不代表值,而表示类型
  2. 任意字母都可以。常用T表示,是Type的缩写

泛型的好处

  1. 编译时,检查添加的元素的类型,提高了安全性
  2. 减少了类型转换的次数,提高了效率

使用的注意事项和细节

  1. Interface List< T >{},public class HashSet< E >{}...等等

    T、E只能是引用类型(类、接口、数组)

  2. 在给泛型指定具体类型后,可以传入该类型或者其子类类型

  3. 实际开发中我们推荐后面的<>里面不放类型,这样更简洁

自定义泛型类

基本语法1

class 类名<T、R...>{//...表示可以有多个泛型

成员

}
注意细节

  1. 普通成员可以使用泛型(属性、方法)
  2. 使用泛型的数组,不能初始化
  3. 静态方法中不能使用类的泛型
  4. 泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
  5. 如果在创建对象时,没有指定类型,默认为Object

基本语法2

interface 接口名<T、R...>{

}
注意细节

  1. 接口中,静态成员也不能使用泛型(这个和泛型类规定一样)
  2. 泛型接口中的类型,在继承接口或者实现接口是确定
  3. 没有指定类型,默认为Object

基本语法3

修饰符 <T、R...>返回类型 方法名(参数列表){

}

注意细节

  1. 泛型方法,可以定义在普通类中,也可以定义在泛型类中
  2. 当泛型方法被调用时,类型会确定
  3. public void eat(E e){} 修饰符后没有<T、R...> eat方法不是泛型方法,而是使用了泛型

使用传统方法的好处,不能对加入到集合ArrayList的数据类型进行约束,遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响

泛型的继承和通配符说明

复制代码
<?>:支持任意泛型类型
<?extends A>:支持A类以及A类的子类,规定了泛型的上线
<? super A>:支持A类以及A类的父类,不限于直接父类,规定类泛型的下线
相关推荐
自由随风飘2 小时前
python 题目练习1~5
开发语言·python
cynicme2 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
Bony-3 小时前
Go语言完全学习指南 - 从基础到精通------语言基础篇
服务器·开发语言·golang
青云交3 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu3 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
fl1768314 小时前
基于python的天气预报系统设计和可视化数据分析源码+报告
开发语言·python·数据分析
Lei活在当下4 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
ACP广源盛139246256734 小时前
(ACP广源盛)GSV6172---MIPI/LVDS 信号转换为 Type-C/DisplayPort 1.4/HDMI 2.0 并集成嵌入式 MCU
c语言·开发语言·单片机·嵌入式硬件·音视频
不穿格子的程序员4 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·
雪域迷影4 小时前
C#中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·http·c#·get