在学java的路途中,让我唯一感觉可怕的就是泛型了,很容易晕,下面就遇到了一个问题:
public class TestLegacy{
public static void main(String args[]){
List<Integer> myList = new ArrayList<Integer>();
myList.add(4);
myList.add(6);
Adder adder = new Adder();
int total = adder.addAll(myList);
System.out.println(total);
}
class Adder {
int addAll(List list){
Iterator it = list.iterator();
int total = 0;
while(it.hasNext()){
int i = ((Integer)it.next()).intValue();
total +=1;
}
rturn total;
}
}
}
如果调用addAll()方法当然没什么问题,但如果换成这样
public class TestBadLegacy{
public static void main(String[] args){
List<Integer> myList = new ArrayList<Integer>();
myList.add(4);
myList.add(6);
Inserter in = new Inserter();
in.insert(myList);
}
}
class Inserter{
void insert(List list){
list.add(new String("42"));
}
}
它竟然能执行,没有报错,这是为什么啊?请大狭们解答一下啊,谢谢啊