nev*_*219 2 java conditional rewrite while-loop
因此,在重写一些代码时,我遇到了以下内容:
方法1
while ( iter.hasNext() ) {
Object obj = iter.next();
if ( obj instanceof Something ) {
returnValue = (Something) obj;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我在没有太多考虑的情况下将其重新编写为以下内容(重写的实际目的是为此方法中的其他逻辑):
方法2
while ( (iter.hasNext()) && (returnValue == null) ) {
Object obj = iter.next();
if ( obj instanceof Something ) {
returnValue = (Something) obj;
}
}
Run Code Online (Sandbox Code Playgroud)
我个人对这两者都没有任何强烈的偏好,并且两种方法都没有看到任何错误.任何人都可以想到使用这两种方法的好处或后果吗?返回变量returnValue.如果那是方法中的最后一个块,人们会怎么想?它刚刚返回?
编辑:所以这就是我正在做的事情:目前这个方法需要一组授权并验证它们 - 返回一个布尔值.此方法允许分组,因此您可以指定至少一个或全部(意味着如果至少一个授权有效,则传递整个集合).但是,此方法不支持授权级别,而我正在对其进行更改,以便每个级别都可以指定不同的分组.所有这些都只是背景信息...与上面的代码没有多大关系 - 另一种方法用于执行上面的代码块.
对我来说,更清楚的是将其作为一种方法来提取; 然后你可以简单地返回值而不是将它分配给本地.
while (iter.hasNext()) {
Object obj = iter.next();
if (obj instanceof Something)
return (Something)obj;
}
return null;
Run Code Online (Sandbox Code Playgroud)
更好的是foreach循环
for (Object o : yourList)
if (o instanceof Something)
return (Something)o
return null;
Run Code Online (Sandbox Code Playgroud)