Java---Which four statements are true

本文详细解析Java中泛型通配符的使用规则,包括?、?extendsE及?superE的具体含义,以及如何判断不同类型之间的赋值兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class A {}
class B extends A {}
class C extends A {}
class D extends B {}

Which four statements are true ?

A:The type List<A>is assignable to List.
B:The type List<B>is assignable to List<A>.
C:The type List<Object>is assignable to List<?>.
D:The type List<D>is assignable to List<?extends B>.
E:The type List<?extends A>is assignable to List<A>.
F:The type List<Object>is assignable to any List reference.
G:The type List<?extends B>is assignable to List<?extends A>.
答案:A、C、D、G

解析:本题考查的是泛型通配符的问题。

?:表示任意类型,如果没有明确,那么就是Object以及任意的java类了;

? extends E:向下限定,E及其子类;

? super E:向上限定,E及其父类。

做这道题目的时候,只需要看尖括号<>里面的内容,明确点和范围的概念。规则如下:

(1)如果尖括号<>里面是一个类,那么代表的就是一个点,例如:List<A>、List<B>、List<C>等;

(2)如果尖括号<>里面有问号,那么代表一个范围,<? extends A>代表小于等于A的范围,<? super A>代表大于等于A的范围,<?>代表全部范围;

(3)尖括号<>里的所有点相互赋值都是错,除非是俩相同的点;

(4)尖括号小范围赋值给大范围是正确的,大范围赋值给小范围是错误的,如果某点包含在某个范围里,那么可以赋值,否则不能赋值;

(5)List<?>和List是相等的,都代表最大范围;

(6)List既是点,也是范围,当表示范围时,是最大范围。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值