java 泛型中的 ?

在 Java 泛型中,? 被称为通配符(wildcard),它代表了未知的类型。使用通配符可以增加代码的灵活性,允许在不知道具体类型的情况下操作泛型类或接口。通配符主要有以下几种形式:

  1. 无界通配符(Unbounded Wildcard):

    • 使用形式为 ?,表示它可以是任何类型。
    • 例如:List<?> list 表示这个列表可以包含任意类型的元素,但是我们不能向这样的列表添加元素(除了 null),因为我们不知道列表实际存储的是哪种类型的数据。
  2. 上界通配符(Upper Bounded Wildcard):

    • 使用形式为 ? extends T,这里的 T 表示某个特定类型,extends 关键字表明通配符所代表的未知类型是 T 类型或其子类型。
    • 例如:List<? extends Number> 可以接受 List<Number>, List<Integer>, List<Double> 等类型的列表,但不能向这些列表中添加对象,因为编译器无法确定添加的对象是否符合列表的实际类型要求。
  3. 下界通配符(Lower Bounded Wildcard):

    • 使用形式为 ? super T,这里的 T 表示某个特定类型,super 关键字表明通配符所代表的未知类型是 T 类型或其父类型。
    • 例如:List<? super Integer> 可以接受 List<Integer>, List<Number>, List<Object> 等类型的列表。在这种情况下,我们可以向列表中添加 Integer 类型的元素,因为这些列表都保证能接受 Integer 类型的数据。

使用通配符可以使泛型更加通用和灵活,但同时也要注意保持类型安全。在处理泛型时,选择合适的通配符可以避免不必要的类型转换错误,并且提高代码的可读性和安全性。

相关推荐
君顾1几秒前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
用户09424856803几秒前
第9章:OpenJDK堆分代与 Serial/Parallel GC 基础
java·jvm
Wang's Blog10 分钟前
Java框架快速入门: Spring Security+OAuth2之RBAC与角色分层实践
java·网络·spring
caoerzhong22 分钟前
JeeWMS 开源仓库管理系统多租户架构解析:一套 Java WMS 如何同时服务多个货主与多个仓库
java·架构·开源·vue
sunshine22 girl27 分钟前
Java学习四 面向对象原理
java
干到60岁退休的码农30 分钟前
15.创建获取用户接口与JWT认证器
java·spring boot·mybatis
小羊没烦恼!35 分钟前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
SL_staff43 分钟前
战略落地的最后一公里:从目标到个人日历的自动化链路实现
java·github·全栈
用户3721574261351 小时前
Java 设置 Excel 数据验证:整数、日期、文本长度、下拉列表和时间
java
白远山1 小时前
智慧场馆解决方案软件开发实战:从架构设计到落地部署指南
java·开发语言·架构·需求分析