首页 > Java > java教程 > 正文

java方法参数中通配符的使用

冰川箭仙
发布: 2025-12-03 09:09:07
原创
843人浏览过
Java通配符?提升泛型灵活性,分无界(?)、上界(? extends T)和下界(? super T);遵循PECS原则:生产用extends,消费用super,避免同时读写。

java方法参数中通配符的使用

Java中的通配符主要用于泛型方法的参数中,用来增强代码的灵活性和可重用性。通配符用?表示,可以配合extendssuper关键字使用,分别限定上界和下界。

通配符的基本形式

通配符有三种常见形式:

  • ?(无界通配符):表示可以接受任意类型的泛型对象。
  • ? extends T(上界通配符):表示接受T类型或其子类型。
  • ? super T(下界通配符):表示接受T类型或其父类型。

无界通配符的使用场景

当你只关心集合的操作而不涉及具体元素类型时,可以使用?。例如,打印一个列表的所有元素:

public void printList(java.util.List> list) {
    for (Object elem : list) {
        System.out.println(elem);
    }
}

这里不能向list中添加除null以外的任何元素,因为类型未知,但可以安全地读取元素并当作Object处理。

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

上界通配符:? extends T

适用于需要从泛型结构中“读取”数据的场景。例如,计算一个数字列表的总和:

public double sum(java.util.List extends Number> numbers) {
    double total = 0.0;
    for (Number num : numbers) {
        total += num.doubleValue();
    }
    return total;
}

这个方法可以接收List<integer></integer>List<double></double>等,只要它们是Number的子类。但不能往里面添加IntegerDouble,因为实际类型不确定。

淘淘乐商城整站 For ECSHOP
淘淘乐商城整站 For ECSHOP

基于ECSHOP2.7.2制作,模板使用的是早期的凡客模板。整站大气,清爽。适合综合,鞋子,服饰类商城使用。具体安装方法在程序包中有说明,在使用之前请看下。 大体方法:1.上传程序至网站根目录,访问:域名/diguo (用户名:admin 密码:123456)2.设置好数据库信息,然后恢复数据,数据目录在www.shopex5.com下.3.修改data目录下的config数据库配置文件。4.登陆

淘淘乐商城整站 For ECSHOP 0
查看详情 淘淘乐商城整站 For ECSHOP

下界通配符:? super T

适用于需要向泛型结构中“写入”数据的场景。例如,将一组整数添加到一个可以容纳Integer及其父类型的列表中:

public void addIntegers(java.util.List super Integer> list) {
    for (int i = 1; i         list.add(i);
    }
}

这个方法可以接收List<integer></integer>List<number></number>List<object></object>等。你可以安全地添加Integer对象,但从中读取的元素只能当作Object使用。

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

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

  • 如果一个参数化类型只是用来产出T实例(即从集合中读取),使用? extends T
  • 如果只是用来消费T实例(即向集合中写入),使用? super T
  • 如果既读又写,通常不使用通配符。

例如,Java集合框架中的Collections.copy()方法就遵循这一原则:

public static void copy(List super T> dest, List extends T> src)

src读取(生产者 → extends),向dest写入(消费者 → super)。

基本上就这些。通配符让泛型更灵活,但也要注意“不能同时读写”的限制,合理使用才能写出安全又通用的代码。

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

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

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

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

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