[英]Any better logic available to check null in while loop?
这是我的代码:
while (itr.hasNext()) {
System.out.println(itr.next());
}
itr
是Iterator
类型。
如果itr
为null
,那么我将面临null指针异常。
我尝试使用if condition
检查while loop
之前itr
是否不为null
。
如下所示:
if (itr != null) {
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
还有其他更好的方法吗?
仅当您故意为Iterator分配null时,您使用的代码才会引发Null Pointer异常。 例如。 即使没有为exampleList分配任何元素,下面的代码也不会引发异常。
List<String> exampleList = new ArrayList<String>();
Iterator<String> itr = exampleList.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
但是下面的代码将在您尝试在Null列表上创建迭代器时引发空指针异常。
List<String> exampleList = null;
Iterator<String> itr = exampleList.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
如果要初始化要在其上创建迭代器的列表,请检查代码。 如果操作正确,则无需检查Null指针。
您的方法似乎更好,但这是另一种方法:
while (itr != null && itr.hasNext()) {
System.out.println(itr.next());
}
您也可以尝试反向循环:
if (null != itr && itr.hasNext()) {
do {
System.out.println(itr.next());
} while (itr.hasNext());
}
只是为了混合而提出另一个答案:
while(Optional.ofNullable(itr).orElse(EmptyIterator.INSTANCE).hasNext()) {
System.out.println(itr.next());
}
或者可能:
Optional.ofNullable(itr).map(item -> {
while(item.hasNext()) {
System.out.println(item.next());
}
});
现在,请确保.map将如何处理println void返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.