foreach语法主要用于数组,他还可以应用于任何Collection对象
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
public class Test_02 {
public static void main(String[] args) {
Collection<String> cc = new ArrayList<String>();
Collections.addAll(cc, "This is a test".split(" "));
for(String str : cc)
System.out.println(str);
}
}
由于Java SE5中引入了Iterable接口,该接口包含一个能产生iterator的iterator()方法,Collection实现了Iterable。
Iterable接口被foreach用来在序列中移动,任意实现了Iterable的类,都可以用于foreach语句中
foreach可以用于数组和Iterable,但数组不一定是一个Iterable
import java.util.Arrays;
public class Test_03 {
static <T> void test(Iterable <T> ia){
for(T t : ia)
System.out.println(t+ " ");
}
public static void main(String[] args) {
test(Arrays.asList(1,2,4));
String [] strs = {"A","aB","Ab"};
//test(strs); 把数组当做Iterable参数传递失败
test(Arrays.asList(strs));
}
}
把数组当做Iterable参数传递失败,需要手动执行转换。