我的问题非常非常简单,但是我在网上找到的所有内容都告诉我我的做法是正确的——但我显然误解了一些东西。
我有一个简单的 Java ListIterator,它在 while-hasNext() 循环中为 next() 返回 null。这是我对调试状态的评论的代码:
[...]
ListIterator<Role> rolesIterator = currentUser.getRoles().listIterator();
// rolesIterator is now: java.util.ArrayList$ListItr
while( rolesIterator.hasNext() ) {
Role roleObject = rolesIterator.next(); // extra step for debugging reasons
String role = roleObject.getName(); // NullPointerException - roleObject is null
[...]
在我看来,如果没有 next() 对象,则不应进入循环——这就是我使用 hasNext() 检查的原因。我理解错了什么,正确的方法是什么?