在这种情况下,是因为List.set(int,E)方法要求类型与列表中的类型相同。
如果您没有辅助方法,则编译器将不知道
?for 是否相同
List<?>以及返回值是否相同,
get(int)因此会出现编译器错误:
The method set(int, capture#1-of ?) in the type List<capture#1-of ?> is not applicable for the arguments (int, capture#2-of ?)
使用helper方法,您告诉编译器,类型是相同的,我只是不知道类型是什么。
那么为什么要使用非辅助方法呢?
泛型直到Java 5才被引入,因此有很多代码早于泛型。Java
5之前
List的版本现在是Java,
List<?>因此,如果您试图在具有通用意识的编译器中编译旧代码,那么如果您无法更改方法签名,则必须添加这些帮助程序方法。



