在一段时间内继续工作吗?

2022-09-01 12:46:09

我有一个看起来像这样:

User user = userDao.Get(1);

do
{
 // processing


 // get the next user
 //
 user = UserDao.GetNext(user.Id);

 if(user == null)
       continue;   // will this work?????????????
}
while ( user != null)

如果它确实有效,它将转到do语句的顶部,并且user为null,所以事情会中断吗?

也许我应该将循环重写为一段时间语句?


答案 1

continue使它跳转到botton的评估,以便程序可以评估它是否必须继续进行另一次迭代或退出。在这种情况下,它将退出。

这是规范:http://java.sun.com/docs/books/jls/third_edition/html/statements.html#6045

这样的语言问题,你可以在Java语言规范中搜索它:http://java.sun.com/docs/books/jls/


答案 2

这真的不是编写此代码的最佳方式。如果用户为 null,则当您尝试在下次获取 user.id 时,您将获得 NullPointerException。更好的方法是:

User user = UserDao.Get(1);
while(user != null) {
  // do something with the user
  user = UserDao.GetNext(user.id);
}

推荐