news 2026/6/13 17:35:35

Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)

一、上界通配符

  • 上界通配符? extends T,表示 T 或 T 的任意子类型,只能读取,不能写入
List<?extendsNumber>list=newArrayList<Integer>(List.of(1,2,3));Numbernum=list.get(0);// 安全读取为 Number
// 不能写入 Integer 类型,因为无法确定具体类型,list 可能是 List<Integer>,也可能是 List<Double> 等publicvoidtest_write(List<?extendsNumber>list){list.add(newInteger(100));}
// 除了写入 nullpublicvoidtest_write(List<?extendsNumber>list){list.add(null);}

二、下界通配符

  • 下界通配符,? super T,表示 T 或 T 的任意父类型
List<?superInteger>list=newArrayList<Number>();list.add(newInteger(1));// 安全,Integer 是 Number 子类
// 只能读取为 Object,因为无法确定具体类型,list 可能是 List<Integer>,也可能是 List<Number> 等publicvoidtest_read(List<?superInteger>list){Objectobj=list.get(0);}

三、无界通配符

  • 无界通配符,?,表示任意类型,只读为 Object
// 不能写入,因为无法确定具体类型,list 可能是 List<Dog>,也可能是 List<Cat> 等// 只能读取为 Object,因为无法确定具体类型,list 可能是 List<Dog>,也可能是 List<Cat> 等voidprocess(List<?>list){for(Objectobj:list){}}

PECS 原则

  • PECS,全称 Producer Extends Consumer Super,用于指导泛型通配符的使用
  1. Producer Extends:生产者,使用上界通配符作为返回类型

  2. Consumer Super:消费者,使用下界通配符作为参数类型

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:20:10

SSM人才猎聘系统j9d6n(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。 系统程序文件列表 开题报告内容 一、项目背景 随着企业竞争的日益激烈&#xff0c;人才已成为推动企业发展的重要资源。然而&#…

作者头像 李华
网站建设 2026/6/10 18:15:36

SSM入学新生信息管理系统y0mew程序+源码+数据库+调试部署+开发环境

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。 系统程序文件列表 开题报告内容 一、项目背景与意义 随着高校招生规模的不断扩大&#xff0c;新生信息管理工作变得日益复杂和繁琐…

作者头像 李华
网站建设 2026/5/29 17:26:50

Autodesk Inventor professiona

链接&#xff1a;https://pan.quark.cn/s/2a0c7227e03fAutodesk inventor professional 是欧特克公司针对机械设计领域而打造的一整套功能强大的机械设计解决方案&#xff0c;主要用于三维建模、仿真、可视化和文档编制。利用软件&#xff0c;工程师可以创建最终产品的虚拟表示…

作者头像 李华
网站建设 2026/5/15 4:52:19

C++之派生类的构造与析构

文章目录构造析构构造 如果子类构造函数没有显式指明基类部分(基类子对象)的初始化方式&#xff0c;那么编译器将会自动调用基类的无参构造函数来初始化基类子对象如果希望以有参的方式来初始化基类部分&#xff0c;那么必须使用初始化列表来显式指明子对象构造顺序 分配内存构…

作者头像 李华
网站建设 2026/6/11 14:42:22

Python快速入门(6)——for/if/while语句

Python快速入门&#xff08;6&#xff09;——for/if/while语句Python的运算基本运算符常用数学运算For循环If条件While循环Python的运算 基本运算符 除了数字支持基本运算符外&#xff0c;python支持幂乘&#xff08;**&#xff09;&#xff0c;python的字符串、列表、元组都…

作者头像 李华
网站建设 2026/6/10 8:57:36

jsp党员信息管理系统76673--(程序+源码+数据库+调试部署+开发环境)

本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;带论文文档1万字以上&#xff0c;文末可获取&#xff0c;系统界面在最后面。系统程序文件列表用户,党费信息,培训公告,奖惩信息,参加活动,基层党组织,党委,党支部开题报告内容一、研究背景与意义随着信息化技术的…

作者头像 李华