ListIterator.next()返回null

dex*_*lin 4 java iterator listiterator

我的问题非常非常简单,但我在网上发现的一切都告诉我,我正在以正确的方式做到这一点 - 但我显然误解了一些事情.

我有一个简单,简单的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
[...]
Run Code Online (Sandbox Code Playgroud)

在我的想法中,如果没有next()对象,则不应输入循环 - 这就是我使用hasNext()检查的原因.我理解错了什么,正确的方法是什么?

JB *_*zet 12

列表中有下一个元素,下一个元素恰好为null.例如:

List<String> list = new ArrayList<>();
list.add("foo");
list.add(null);
list.add("bar");
Run Code Online (Sandbox Code Playgroud)

以上列表有3个要素.第二个是null.

修复填充列表的代码,并确保它不在列表中添加任何null Role,或者在循环内检查null以避免NullPointerExceptions.