泛型高级进阶一:泛型的基本使用

   日期:2020-09-07     浏览:95    评论:0    
核心提示:泛型高级进阶一:泛型的基本使用文章目录泛型高级进阶一:泛型的基本使用什么是泛型为什么使用泛型泛型的使用方法1.泛型的引用方式2.泛型的参数定要3.泛型的参数定义4.泛型的The Diamond钻石运算符5.受限的类型参数(泛型继承和实现)什么是泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制该机制允许程序员在编译时检测到非法的类型泛型的本质是参数类型,也就是说所操作的数据类型被指定为一个参数泛型不存在于JVM虚拟机为什么使用泛型泛型可以增

泛型

泛型高级进阶一:泛型的基本使用

泛型高级进阶二:泛型的高级使用

文章目录

  • 泛型
    • 泛型高级进阶一:泛型的基本使用
    • 泛型高级进阶二:泛型的高级使用
  • 什么是泛型
  • 为什么使用泛型
  • 泛型的使用方法
    • 1.泛型的引用方式
    • 2.泛型的参数
    • 3.泛型的参数定义
    • 4.泛型的The Diamond钻石运算符
    • 5.受限的类型参数(泛型继承和实现)

什么是泛型

Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制

  • 该机制允许程序员在编译时检测到非法的类型
  • 泛型的本质是参数类型,也就是说所操作的数据类型被指定为一个参数
  • 泛型不存在于JVM虚拟机

为什么使用泛型

  • 泛型可以增强编译时错误检测,减少因类型问题引发的运行时异常
  • 泛型具有更强的类型检查
  • 泛型可以避免类型转换
  • 泛型可以泛型算法,增加代码复用性

泛型的使用方法

1.泛型的引用方式

1、泛型类格式:

class name<T1, T2, ..., Tn>

2、泛型方法格式:

private <K,V> boolean compare(Pair<K,V> p1, Pair<K,V> p2)

3、调用格式:

Util.<K, V>compare(p1,p2)

2.泛型的参数

1、最常见的类型变量名有:
E:元素(在Java集合框架中有广泛的应用)
K:键
N:数字
T:类型
V:值

2、其他可用参数
S,U,V 等:第二,第三,第四个类型

3.泛型的参数定义

1、泛型的基本参数定义

Foo<T>中整个成为泛型类型
Foo<T>中的T为类型参数
Foo<String>中的String为类型变量,也可以称为实际类型参数

4.泛型的The Diamond钻石运算符

  • JDK7以下版本
Box<Integer> integerBox = new Box<Integer>();
  • JDK7及以上版本
Box<Integer> integerBox1 = new Box<>();// The Diamond(菱形) 类型推断

5.受限的类型参数(泛型继承和实现)

1、定义

  • 功能:对泛型变量的范围作出限制
  • 算法实现:关键就是利用受限类型参数
  • 格式: extends表达的意义:这里指的是广义上“扩展”,兼有“类继承”和“接口实现”之意

2、单一限制:单独继承Number
例如:U继承Number实现

<U extends Number>

3、多种限制:
多种限制下的格式语法要求:如果上限类型是一个类,必须第一位标出,否则编译错误
例如:A是继承,B和C是接口

<U extends A & B & C>

4、继承关系容易误解的地方:

  • 泛型的参数存在继承关系并不属于泛型继承
Box<Number>Box(Interger)

如下图:虽然Interger继承Number,但是box与Box(Interger)没有任何关系,它们均继承Object,

  • 存在继承关系的原则:class之间存在继承关系,且子class与父class需含至少一个相同的泛型
    如下图:ArrayLIst与List是继承关系,且存在相同的String泛型参数
    PayLoadList与List存在继承参数,且至少存在一个String泛型参数

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服