我的问题真的非常简单,但我在网上找到的一切都告诉我我的做法是正确的 - 但我显然误解了一些东西。
我有一个简单的 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() 检查的原因。我哪里理解错了,正确的方法是什么?
最佳答案
列表中有下一个元素,而这个下一个元素恰好为null。例如:
List<String> list = new ArrayList<>();
list.add("foo");
list.add(null);
list.add("bar");
上面的列表有 3 个元素。第二个为空。
修复填充列表的代码并确保它不会在列表中添加任何 null Role,或者在循环内检查 null 以避免 NullPointerExceptions。
关于java - ListIterator.next() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24912785/