首页 > Java > java教程 > 正文

java通配符的使用规则

舞夢輝影
发布: 2025-12-03 16:26:02
原创
456人浏览过
Java通配符?用于泛型中处理未知类型,分无界(List<?>)、上限(List<? extends T>)和下限(List<? super T>)三种;无界适用于只读操作,上限允许读取T及其子类对象但不可写入(null除外),下限允许写入T及其子类对象但读取时仅作Object处理;遵循PECS原则(生产用extends,消费用super)可提升代码灵活性与类型安全。

java通配符的使用规则

Java通配符主要用于泛型中,用来处理未知类型,增强代码的灵活性和安全性。通配符用 ? 表示,根据使用场景可分为三种形式:无界通配符、上限通配符和下限通配符。

无界通配符(Unbounded Wildcards)

形式为 List<?>,表示可以接受任何类型的泛型集合。

适用于你只调用不依赖具体类型的方法,比如 size() 或 clear(),而不涉及添加元素(除了 null)的情况。

说明:
  • 只能读取数据,不能向集合中写入除 null 外的任何值。
  • 适合用于“只读”操作的参数传递。

上限通配符(Upper Bounded Wildcards)

形式为 List<? extends Number>,表示接受 Number 或其子类(如 Integer、Double)的泛型集合。

立即学习Java免费学习笔记(深入)”;

当你需要读取数据,并希望对元素进行与上界类型相关的操作时使用。

易森网络企业版
易森网络企业版

如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld

易森网络企业版 0
查看详情 易森网络企业版
说明:
  • 可以从集合中读取对象,并将其视为上界类型(如 Number)。
  • 不能向集合中添加除 null 以外的任何值,因为编译器无法确定实际类型是哪一个子类。

下限通配符(Lower Bounded Wildcards)

形式为 List<? super Integer>,表示接受 Integer 或其父类(如 Number、Object)的泛型集合。

当你需要向集合中写入数据,且后续由其他部分读取时使用。

说明:
  • 可以安全地向集合中添加 Integer 及其子类对象。
  • 从集合读取时,只能当作 Object 类型使用,失去具体类型信息。

PECS 原则(Producer-Extends, Consumer-Super)

这是使用通配符的重要指导原则:

  • 如果一个集合主要用于生产(读取)数据,使用 ? extends T
  • 如果一个集合主要用于消费(写入)数据,使用 ? super T
  • 这个原则来自《Effective Java》,能帮助正确选择通配符类型。

基本上就这些。合理使用通配符能让泛型代码更灵活,同时保持类型安全。关键是理解读写限制和应用场景。不复杂但容易忽略细节。

以上就是java通配符的使用规则的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号