源码分析:
package java.lang;
import java.util.Iterator;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;
public interface Iterable<T> {
//定义iterator方法,返回迭代器
Iterator<T> iterator();
/**
* jdk8新增
* 大意为:
* 根据action调用Objects.requireNonNull进行过滤
* 过滤结果调用for循环取出,
* @since 1.8
*
*/
default void forEach(Consumer<? super T> action) {
判断对象是否为null,抛出空指针异常NullPointerException
Objects.requireNonNull(action);
for (T t : this) {//循环遍历
action.accept(t);
}
}
/**
* dk8新增
* 大意为:
* 分离迭代器,将未知大小的迭代器进行拆分,返回拆分的迭代器本身
* @since 1.8
*/
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
}