PECS规则

1.规则

  • 集合中读取类型T的数据, ? extends T 或者 ?
  • 集合中添加数据 ? super T
  • ? 和 ? extends T不能添加数据
  • 消费者使用“? extends T”通配符,生产者使用“? super T”通配符

2.示例

List<String> namesOri = new ArrayList<>();
namesOri.add("A");
namesOri.add("B");

List<?> names = namesOri;
// names.add("sss");
List<Object> allNames = new ArrayList<>();
allNames.add("C");
allNames.addAll(names);
// 只能迭代
for (Object name : names) {
	log("names -> " + name.toString());
}
for (Object allName : allNames) {
	log("allName -> " + allName);
}

List<? extends String> namesExtend = namesOri;
// The method add(capture#3-of ?) in the type List<capture#3-of ?> is not
// applicable for the arguments (Object)

List<? super String> namesSuper = namesOri;
// 添加普通元素
namesSuper.add("namesSuperTest");
List<? extends String> namesSuper1 = namesOri;
namesSuper.addAll(namesSuper1);
log(namesSuper.toString());
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值