【Java】<泛型>,在编译阶段约束操作的数据结构,并进行检查。

简介: 【Java】<泛型>,在编译阶段约束操作的数据结构,并进行检查。

JAVA泛型



泛型介绍

  • ①泛型:Java泛型是一种强大的编程概念,可用于编写可重用、类型安全和通用的代码。泛型在Java中引入了类型参数,允许开发者编写可以处理不同数据类型的通用类、接口和方法。是JDK5中引入的特性,总而言之就是:可以在编译阶段约束操作的数据结构,并进行检查
  • ②泛型格式<数据类型>
  • ③泛型只能支持: 引用数据类型


使用泛型的好处

  • ①统一数据类型。(确定泛型后,传递数据时,可传递指定类型或其子类类型数据。不能传递基本数据类型。)
  • ②泛型允许开发者在编译时捕获类型错误,而不是在运行时。把运行时期的问题提前到编译期间,避免了强制类型转换可能出现的异常,这提高了代码的质量和可维护性。
  • 注意:如果我们没有通过泛型给集合指定类型,默认所有的数据都是Object类型,此时可以往集合中添加任意的数据类型,**弊端:**此时我们在获取到集合的数据时,无法使用他的特有行为(无法访问其特有的方法函数)。


真相

  • Java中的泛型是伪泛型
  • 它只有在编译阶段生效,以检查并确定类型。
  • 当数据存入集合后,进入到运行阶段,存入的数据依旧是当作Object类型来处理。在获取时又根据泛型来进行强制转换。


泛型使用

  • 使用在类后面:
  • 泛型类
  • 适用场景:当一个类中,某个变量的数据类型不确定,可定义带泛型的类,做到约束,检查变量类型的作用。
  • 格式:修饰符 class 类名<类型>{}
ArrayList<String> stringList = new ArrayList<>();
ArrayList<Integer> intList = new ArrayList<>();

  • 使用在方法上:
  • 泛型方法
  • 使用场景:方法中形参类型不确定时,可以使用类名后面定义的泛型,即泛型类,当然也可以也可以在方法上定义泛型(仅本方法使用)。
  • 格式:修饰符 <类型>返回值类型 方法名(类型 类型名){}
public <T> T getFirstElement(List<T> list) {
    return list.get(0);
}

  • 用在接口后面:
  • 泛型接口
  • 格式:修饰符 interface 接口名<类型>{}
  • 如何使用一个带泛型的接口:
  • ①实现类给出具体类型。
  • ②实现类眼神泛型,创建对象时再确定。


泛型的继承和通配符

  • 泛型不具备继承性,但是数据具备继承性。
  • 通配符? —— 通配符是一种用于表示不确定类型的类型参数。? 用于表示通配符。通配符可以在方法参数中用于接受多个类型的参数
  • 上限通配符:? entends E:可以传递E或者E所有的子类类型。
  • 下限通配符:? super E:可以传递E或者E所有的父类类型。




目录
相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
69 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
23天前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
38 1
|
25天前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
79 2
|
25天前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
57 2
|
8天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
27 6
|
14天前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
19天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
19天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
17天前
|
Ubuntu Java Linux
如何检查 Java 版本是否兼容
要检查Java版本是否兼容,可在命令行输入“java -version”查看当前安装的Java版本,然后对比目标应用所需的Java版本,确保其满足要求。
|
22天前
|
存储 算法 Java
Java 中常用的数据结构
【10月更文挑战第20天】这些数据结构在 Java 编程中都有着广泛的应用,掌握它们的特点和用法对于提高编程能力和解决实际问题非常重要。
24 6