public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
for(String i : list){
System.out.println(i);
}
}
為什麼不聲明泛型String之後用foreach遍歷就會報錯?泛型在這裡起到的作用是什麼.?
for-loop的底層使用的是iterator,試想你的程序編譯器轉化後和以下代碼一致,就沒問題
Iterator i = list.iterator();
while(iter.hasNext()) {
String i = iter.next(); //iterator.next()是string類型
}
如果不用范型,你的程序就是
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
String i = iterator.next(); // 看到問題了麼,這裡iteraotr.next()是object,類型轉換失敗啊
}