java8-通配符类型总结

本文探讨了Java中泛型系统使用通配符的必要性,以解决严格泛型带来的不便。通过举例说明,解释了子类通配符(? extends)和超类通配符(? super)在读取和写入操作上的限制,以及它们之间的继承关系。同时阐述了无限定通配符(?)的作用和限制。总结了通配符在方法参数校验和类型兼容性方面的应用。
摘要由CSDN通过智能技术生成

通配符类型

为什么引入通配符类型,严格的泛型系统使用起来不太方便。(尤其是方法参数校验上)
例如:我编写一个打印Pair<Employee>的函数,是无法传递Pair<Manager>的,因为两者没有任何关系
    但是引入通配符类型以后,Pair<S> 和 Pair<T> 就有关系了
例如:
Pair<? extends Employee> 是 Pair<Employee> 和 Pair<Manager>的父类
Pair<? extends Manager> 是 Pair<Manager> 的父类
Pair<? extends Employee> 是 Pair<? extends Manager> 的父类
Pair<? super Employee> 是 Pair<Employee> 和 Pair<Object> 的父类;
Pair<? super Manager> 是 Pair<Employee> 和 Pair<Manager> 和 Pair<Object> 的父类;
Pair<? super Manager> 是 Pair<? super Employee> 的父类
而无限定类型通配符。Pair<?>更感觉有点扯淡。
Pair 是 Pair<?> 的父类,Pair<?> 是其他 【子类限定】【父类限定】的父类
子类通配符 允许读取一个泛型对象,并赋值给该限定类型
	即修改器方法不允许调用,访问器方法可以访问,并赋值给父类类型
超类通配符 允许进行写入,但是只能传递该限定类型及其子类!(子类这个有点变态),也可以读取,但是只能返回Object
	即修改器可以调用,但是只能传递(限定类型及其子类),访问器方法可以访问,只能返回Object
无限定通配符 不允许写入,读取也只能返回Object
	即修改器不可以调用,访问器方法可以访问,只能返回Object
菜鸡一枚,重新学习JAVA,不对之处请指正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值