【发布时间】:2013-07-25 21:21:03
【问题描述】:
是否有可能在java中创建一个类型,可以在冒号之后传递到foreach循环中?如果有,怎么做?
起初我以为 foreach 只适用于数组,但后来我注意到 Lists 可以迭代。那么我的问题是,这是解释器自动执行的操作,还是可以创建我自己的可以使用的类?
【问题讨论】:
是否有可能在java中创建一个类型,可以在冒号之后传递到foreach循环中?如果有,怎么做?
起初我以为 foreach 只适用于数组,但后来我注意到 Lists 可以迭代。那么我的问题是,这是解释器自动执行的操作,还是可以创建我自己的可以使用的类?
【问题讨论】:
是的,只需实现Iterable 接口即可。
来自http://docs.oracle.com/javase/6/docs/api/java/lang/Iterable.html:
实现这个接口允许一个对象成为“foreach”语句的目标。
【讨论】:
【讨论】:
要拥有此功能,您可以实现Iterable 接口。您需要实现自己的iterator() 方法。然后,您可以使用 foreach 循环。
【讨论】:
是的。正如the Java Language Specification 中所说,您需要实现Iterable interface。如果这样做,您的类的实例可以在增强的for 循环中使用。
Iterable 是一个非常非常简单的接口:它要求您有一个返回Iterator<T> instance 的iterator 方法。
【讨论】: