为什么增强的for循环在迭代集合之前不执行null检查。
发布于 2013-10-21 15:43:15
我有点害怕断言反对乔恩·斯基特。:| ...但是真见鬼..。你对这个场景怎么看?
`
findMoney(List<Places> places){
int money = 0;
for(Place place : places){
money += searchWithCare(place);
}
return money;
}
`
如果我让某个客户告诉我去哪里找,他什么也没告诉我。你认为在这里抛出一个NullPointerException更好吗?可能正在管理对此方法的调用,因此如果参数为空,则不调用它?我认为返回0是一个一致的响应,因为这里没有错误。我相信管理代码流是有例外的,我不明白为什么我要在这种情况下改变流。返回一个cero或者甚至null可能是一个很好的响应,难道不是吗?
那么这个解决方案呢?
findMoney(List<Places> places){
int money = 0;
for(Place place : places == null ?Collections.<Place>emptyList():places){
money += searchWithCare(place);
}
return money;
}
`
发布于 2015-01-29 19:31:42
代码必须如下所示:
for (AnyObject anyObject : checkIsEmpty(anyObjectList)) {
System.out.println(anyObject.doSomething());
}
private <T> Iterable<T> checkIsEmpty(Iterable<T> iterable) {
return iterable == null ? Collections.<T>emptyList() : iterable;
}
https://stackoverflow.com/questions/3984626
复制相似问题