我无法弄清楚这个for循环是怎么回事。
它在每个循环上分配一个User
变量。但是在第一个循环之后,reader.read()
不再被调用(我调试了它),而user
始终是user1
任何线索?
public class Application {
public static void main(String[] args) {
UserReader reader = new UserReader();
for( User user = reader.read(); user != null; ){
System.out.println(user); // always "user1"
}
}
}
public class UserReader {
private Iterator<User> users;
public ItemReaderImpl() {
this.users = mock().iterator();
}
public User read() {
return users.hasNext() ?
users.next() : null;
}
private static List<User> mock() {
List<User> users = new LinkedList<User>();
users.add(new User("user1"));
users.add(new User("user2"));
users.add(new User("user3"));
users.add(new User("user4"));
users.add(new User("user5"));
return users;
}
}
输出
BOOM 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 到无穷大