当前位置: 首页 > news >正文

Java 通配符

一、为什么需要通配符?

泛型让代码更安全、更灵活,但在某些情况下,类型参数不能确定(比如方法参数既要接收 List 又要接收 List),这时就需要 通配符(Wildcard)。


二、三种常见通配符

1. 无界通配符 <?>

表示“任意类型”。

public void printList(List<?> list) {for (Object obj : list) {System.out.println(obj);}
}

✅ 可以读取元素
❌ 不能添加(除了 null)

2. 上界通配符 <? extends T>

表示「类型是 T 或 T 的子类」,常用于 只读场景。

public double sum(List<? extends Number> list) {double total = 0;for (Number n : list) total += n.doubleValue();return total;
}

✅ 可以安全读取为 T 类型
❌ 不能往里放(除了 null)

3. 下界通配符 <? super T>

表示「类型是 T 或 T 的父类」,常用于 写入场景。

public void addIntegers(List<? super Integer> list) {list.add(1);list.add(2);
}

✅ 可以安全写入 T 或其子类
❌ 读取只能得到 Object


三、小结

通配符典型用法
<?>只读(打印、遍历)
<? extends T>上界:只读 T
<? super T>下界:安全写入

📖 口诀:PECS 原则

  • Producer Extends → 生产者用 extends
  • Consumer Super → 消费者用 super
http://www.dtcms.com/a/561384.html

相关文章:

  • java-learn(9):常见算法,collection框架
  • 海口网站建设维护网校 039 网站建设多少钱
  • 网站建设的频道是什么济南企业网站制作费用
  • 外卖餐饮小程序带商城系统餐桌预定点餐寄存排队等待在线点单程序
  • 广州市公司网站建设价格wordpress播放音乐
  • Onnxruntime源码解析
  • Typescript - type 类型别名(通俗易懂教程)
  • 专业建站lhznkj挂机宝做网站
  • 单位网站建设 管理制度wordpress中文视频插件下载
  • 【ComfyUI】混元3D 2.0 Turbo 多视图生成模型
  • 【SAM】eval_coco.py说明
  • 阜宁网站制作具体报价手机端网页设计尺寸规范
  • 青岛做网站和小程序的公司大连长建个人主页
  • [MySQL] JDBC
  • 从零开始学习Redis(六):Redis最佳实践(使用经验总结)
  • 秦皇岛建设网站西安百度seo代理
  • 备案 几个网站职业生涯规划
  • Ruby CGI Cookie 使用指南
  • 网站建设重要意义西部数码做跳转网站
  • X-plore安卓版(安卓手机文件管理器)
  • 【自然语言处理】基于生成式语言模型GPT
  • 广州网站建设方案案例用ps做网站画布一般建多大
  • 兰州网站搜索排名中国苏州网站
  • 【第二十周】自然语言处理的学习笔记05
  • 集成测试的分类
  • 上海网站建设百度推广公司wordpress 暂停前台访问
  • 微信网站建设哪家好企业网站分类举例
  • PyTorch 中 model.eval() 的使用与作用详解
  • Linux文件搜索:grep、find命令实战应用(附案例)
  • 搞一个卖东西的网站怎么做企业形象设计英文