[英]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.