我有一个简单的问题如下:这是一个关于整个问题的简单示例:
List a = new ArrayList();
List <?> b;
List <? extends Object> c;
根据 khalid mughal 的 Java SCJP(一本非常好的书!):
a = b; // ok. Widening conversion.
b = a; // ok too. No unchecked warning.
b = c; // ok
c = b; // ok
c=a; // ok but now will issue a unchecked warning. // clause 1
我确实理解任何原始类型(示例 a)在分配给任何有界通配符引用时,都会出现未经检查的警告(因为该原始类型 a 中的内容可以是任何东西)。
我的问题是因为 c 是最高上限(?扩展对象),不应该在没有警告的情况下将 a 分配给 c 吗?