Java 泛型:通配符捕获误解
阅读Java在线教程,我对通配符捕获一无所知。例如:
import java.util.List;
public class WildcardError {
void foo(List<?> i) {
i.set(0, i.get(0));
}
}
为什么编译器无法安全地保留赋值?
它知道,例如,通过执行带有List的方法,它从值获取。因此,它尝试将索引处的值设置为相同的整数列表()。Integer
i.get
Integer
Integer
0
i
那么,这是怎么回事呢?为什么要写通配符帮助程序?