体验J2SE 1.5新特性之增强For循环

http://tech.ddvip.com   2006年11月27日    社区交流

本文详细介绍体验J2SE 1.5新特性之增强For循环

  清单13:用int型的循环变量来遍历一个能取出10个Integer元素的类

import java.util.*;
public class TenIntegers implements Iterable<Integer> {
 public Iterator<Integer> iterator() {
  return new Iterator<Integer>() {
   private int count = 0;
   public boolean hasNext() {
    return (count < 10);
   }
   public Integer next() {
    return Integer.valueOf(count++);
   }
   public void remove() {
    throw new UnsupportedOperationException();
   }
  };
 }
 public static void main(String[] args)
 {
  TenIntegers integers = new TenIntegers();
  for (int i : integers)
  {
   System.out.println(i);/* 依次输出从“0"到“9”的十个整数 */
  }
 }
}

  另外,一个类只能实现一次java.lang.Iterable接口,即使在后面的尖括号里使用不同的类型。类似“class A implements Iterable<String>, Iterable<Integer>”的写法,是不能通过编译的。所以,没有办法让一个可遍历对象能在这样遍历时,既可以使用Integer,又可以使用String来作为循环变量的类型(当然,把它们换成另外两种没有继承和自动转化关系的类也一样行不通)。

  6. 归纳总结

  借助J2SE 1.5中引入的第二种for循环,可以用一种更简单地方式来完成遍历。能用这种方法遍历的对象的类型,可以是数组、Collection或者任何其它实现了java.lang.Iterable接口的类。通过跟同样是在J2SE 1.5中引入的泛型机制配合使用,可以精确的控制能采用的循环变量的类型。而且,因为这么编写的代码,会在编译期间被自动当成是和传统写法相同的形式,所以不必担心要额外付出性能方面的代价。

责编:豆豆技术应用

正在加载评论...