网站首页 > java教程 正文
在Java集合中的元素通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要作显示的强制类转换,对于强制类型转换错误的情况下,编译器可能不提示错误,在运行时才显示异常,这一个不小的隐患,这时候就需要泛型的应用,今天小编将为大家带来大数据编程入门:Java泛型这篇文章介绍Java中的泛型。
一、Java泛型概念
Java泛型是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,允许程序员在编译时检测非法类型。
泛型的本质是参数化类型,即操作的数据类型被指定为参数。
假设设置这么一个问题:如何编写一个排序方法来对整数数组、字符串数组甚至任何其他类型的数组进行排序?
答案为可以使用Java泛型。
使用Java泛型的概念,我们可以编写一个泛型方法来对对象数组进行排序。然后,调用泛型方法对整数数组、浮点数组、字符串数组等进行排序。
二、泛型方法
可以编写一个泛型方法,在调用时可以接收不同类型的参数。编译器根据传递给泛型方法的参数类型适当地处理每个方法调用。
以下是定义泛型方法的规则:
- 所有泛型方法声明都有一个类型参数声明部分(用尖括号分隔),位于方法返回类型之前(在下面的示例的<E>中)。
- 每个类型参数声明部分包含一个或多个由逗号分隔的类型参数。泛型参数(也称为类型变量)是用于指定泛型类型名称的标识符。
- 类型参数可用于声明返回值类型,并可用作通过泛型方法获得的实际参数类型的占位符。
- 泛型方法体的声明与其他方法相同。请注意,类型参数只能表示引用类型,而不能表示原始类型(如int、double、char等)。
以下示例演示如何使用常规方法打印不同类型的数组元素:
运行结果:
有界的类型参数:
有时,可能希望限制允许传递给类型参数的类型范围。例如,对数字进行操作的方法可能只希望接受Number或Number子类的实例。这就是有界类型参数的用途。
要声明有界类型参数,首先列出类型参数的名称,然后是extends关键字,最后是它的上界。
下面的示例演示如何在“extends”(类)或“implement”(接口)的一般意义上使用“extends”。本例中的泛型方法返回三个可比较对象的最大值。
运行结果:
三、泛型类
泛型类的声明与非泛型类的声明类似,只是类型参数声明部分添加在类名之后。
与泛型方法一样,泛型类的类型参数声明部分也包含一个或多个由逗号分隔的类型参数。泛型参数(也称为类型变量)是用于指定泛型类型名称的标识符。因为它们接受一个或多个参数,所以这些类称为参数化类或参数化类型。
以下示例演示如何定义泛型类:
运行结果:
四、类型通配符
1、是否通常使用类型通配符?而不是特定的类型参数。例如,List<?>从逻辑上讲,它是所有List<具体类型实参>的父类,例如List<String>、List<Integer>。
运行结果:
2、通配符类型的上限由列表等表单定义,此定义是通配符泛型值接受Number及其较低的子类类型。
运行结果:
解析:在(//1)处会发生错误,因为getUperNumber()方法中的参数已将参数泛型的上限限制为Number,所以String的泛型不在此范围内,因此会报告错误。
3、类型通配符的下限是通过诸如List<?Super Number>表示该类型只能接受Number及其三层父类型,例如Object类型的实例。
以上就是关于大数据编程入门:Java泛型的全部内容了,希望这篇文章可以帮助到大家~
- 上一篇: 3分钟带你彻底搞懂Java泛型背后的秘密
- 下一篇: 这样学Java 泛型,不信你还不会
猜你喜欢
- 2024-11-19 Java基础:泛型,设计的灵活与局限
- 2024-11-19 Java必学:深入了解泛型
- 2024-11-19 你真的了解java中的泛型吗?
- 2024-11-19 你了解Java泛型吗?
- 2024-11-19 Java核心知识 基础五 JAVA 泛型
- 2024-11-19 Java泛型详解
- 2024-11-19 Java中的泛型是什么?
- 2024-11-19 Java/Scala 泛型快速入门教程
- 2024-11-19 Java高级特性—泛型看这一篇就够了
- 2024-11-19 讲讲Java的泛型
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)