循环内部的变量赋值

时间:2016-05-13 18:23:26

标签: java for-loop

我无法弄清楚这个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 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 繁荣 到无穷大

0 个答案:

没有答案