为什么数组没有实现Iterable接口,但可以使用foreach语句遍历

Posted Just Go Ahead !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么数组没有实现Iterable接口,但可以使用foreach语句遍历相关的知识,希望对你有一定的参考价值。

在Java中,对于数组为什么能够使用foreach语句一直感觉很困惑。

对于能够使用foreach语句进行遍历的对象,只有两种情况,其中一种是遍历对象必须实现Iterable接口,实现ierator()方法,这是对象使用foreach语句的前提。另外一种情况就是特殊对象数组。那么对于数组可以使用foreach该如何去理解呢?

首先需要说明的是,实现了java.lang.Iterable接口的对象可以用for-each去遍历,但是能用for-each去遍历的不一定实现了该接口,比如数组这个特殊对象就是这一特殊情况。但是网上关于这方面的资料很少,自己只能说下自己的理解。

我认为数组对象之所以能够使用foreach语句进行遍历元素,是因为JVM在底层将对于数组的foreach循环转换为对于这个数组每一个的循环引用。类似在底层转化成了普通的for语句一样,得以保证我们使用foreach语句时候能够正确的进行遍历。

以上是关于为什么数组没有实现Iterable接口,但可以使用foreach语句遍历的主要内容,如果未能解决你的问题,请参考以下文章

请问java中的Iterator和Iterable有些啥区别啊?

foreach用法

Dart基础:可迭代的集合

在 Object[] 数组上实现 Java Iterator 和 Iterable 接口

foreach的使用原理简单解析

java中自己实现一个可以用foreach循环的类 Iterable,Iterator