大数据编程入门:Java泛型

在Java集合中的元素通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要作显示的强制类转换,对于强制类型转换错误的情况下,编译器可能不提示错误,在运行时才显示异常,这一个不小的隐患,这时候就需要泛型的应用,今天小编将为大家带来大数据编程入门:Java泛型这篇文章介绍Java中的泛型。

大数据编程入门:Java泛型

一、Java泛型概念

Java泛型是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,允许程序员在编译时检测非法类型。

泛型的本质是参数化类型,即操作的数据类型被指定为参数。

假设设置这么一个问题:如何编写一个排序方法来对整数数组、字符串数组甚至任何其他类型的数组进行排序?

答案为可以使用Java泛型。

使用Java泛型的概念,我们可以编写一个泛型方法来对对象数组进行排序。然后,调用泛型方法对整数数组、浮点数组、字符串数组等进行排序。

二、泛型方法

可以编写一个泛型方法,在调用时可以接收不同类型的参数。编译器根据传递给泛型方法的参数类型适当地处理每个方法调用。

以下是定义泛型方法的规则:

  1. 所有泛型方法声明都有一个类型参数声明部分(用尖括号分隔),位于方法返回类型之前(在下面的示例的中)。
  2. 每个类型参数声明部分包含一个或多个由逗号分隔的类型参数。泛型参数(也称为类型变量)是用于指定泛型类型名称的标识符。
  3. 类型参数可用于声明返回值类型,并可用作通过泛型方法获得的实际参数类型的占位符。
  4. 泛型方法体的声明与其他方法相同。请注意,类型参数只能表示引用类型,而不能表示原始类型(如int、double、char等)。

以下示例演示如何使用常规方法打印不同类型的数组元素:

大数据编程入门:Java泛型

运行结果:

大数据编程入门:Java泛型

有界的类型参数:

有时,可能希望限制允许传递给类型参数的类型范围。例如,对数字进行操作的方法可能只希望接受Number或Number子类的实例。这就是有界类型参数的用途。

要声明有界类型参数,首先列出类型参数的名称,然后是extends关键字,最后是它的上界。

下面的示例演示如何在“extends”(类)或“implement”(接口)的一般意义上使用“extends”。本例中的泛型方法返回三个可比较对象的最大值。

大数据编程入门:Java泛型

运行结果:

大数据编程入门:Java泛型

三、泛型类

泛型类的声明与非泛型类的声明类似,只是类型参数声明部分添加在类名之后。

与泛型方法一样,泛型类的类型参数声明部分也包含一个或多个由逗号分隔的类型参数。泛型参数(也称为类型变量)是用于指定泛型类型名称的标识符。因为它们接受一个或多个参数,所以这些类称为参数化类或参数化类型。

以下示例演示如何定义泛型类:

大数据编程入门:Java泛型

运行结果:

大数据编程入门:Java泛型

四、类型通配符

1、是否通常使用类型通配符?而不是特定的类型参数。例如,List<?>从逻辑上讲,它是所有List<具体类型实参>的父类,例如List、List

大数据编程入门:Java泛型

运行结果:

大数据编程入门:Java泛型

2、通配符类型的上限由列表等表单定义,此定义是通配符泛型值接受Number及其较低的子类类型。

大数据编程入门:Java泛型

运行结果:

大数据编程入门:Java泛型

解析:在(//1)处会发生错误,因为getUperNumber()方法中的参数已将参数泛型的上限限制为Number,所以String的泛型不在此范围内,因此会报告错误。

3、类型通配符的下限是通过诸如List<?Super Number>表示该类型只能接受Number及其三层父类型,例如Object类型的实例。

以上就是关于大数据编程入门:Java泛型的全部内容了,希望这篇文章可以帮助到大家~

展开阅读全文

页面更新:2024-05-17

标签:通配符   子类   标识符   编译器   逗号   数组   示例   演示   入门   定义   声明   错误   名称   参数   类型   方法   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top