在常规循环中,我们可以如下所示,制作单个嵌套层。
for (int i=0; listObject != null && i < listObject.size(); i++) {
// Do whatever we want
}
但是,为每个循环使用以下样式,我将需要一个双重嵌套代码:-
if (listObject != null) {
for (Object object: listObject) {
// Do whatever we want
}
}
是否可以将listObject != null
条件嵌入到 for 循环语句中以使其成为单个嵌套代码?
你的第二个示例是清晰易懂的代码。 在 if 块中嵌套 for 循环并没有错。 这比你的第一个例子更清楚。
但是,如果您坚持将它们组合在一起,则可以使用三元运算符在 listObject
为 null 时提供一个空列表。 使用 Collections.emptyList
意味着不会进行迭代,也不会抛出NullPointerException
。
for (Object object : listObject == null ? Collections.emptyList() : listObject)
当一个清晰的例子(如你的第二个例子)已经存在时,我认为我不会使用这样的代码,但这段代码确实提供了一种在for
循环中获取两个冒号的方法。
为了使它简洁,同时有一个嵌套循环,我决定让它成为如下功能
void checkCondition(List<Object> listObject) {
if (listObject == null) return;
for (Object object: listObject) {
// Do whatever
}
}