java通用_Java通用列表>

在Java中,如果Car是Vehicle的派生类,那么我们可以将所有Cars作为Vehicle;一辆汽车是一辆车。然而,汽车列表也不是车辆列表。我们说List< Car>不与List< Vehicle>协变。

Java要求你明确告诉它什么时候你想使用协方差和逆变的通配符,代表?令牌。看看你的问题发生的地方:

List> l = new ArrayList>();

// ---------------- ------

//

// "? extends Number" matched by "Number". Success!

内部List&lt ;? extends Number>因为Number确实扩展了Number,所以它匹配“?extends Number”。到现在为止还挺好。下一步是什么?

List> l = new ArrayList>();

// ---------------------- ------------

//

// "List extends Number>" not matched by "List". These are

// different types and covariance is not specified with a wildcard.

// Failure.

然而,组合的内部类型参数List extends Number>不匹配List< Number&gt ;;类型必须完全相同。另一个通配符将告诉Java这个组​​合类型也应该是协变的:

List extends List extends Number>> l = new ArrayList>();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值