Java语言中,数组(Arrays)是持有相同型别(Type)对象的理想机制。但为了避免出现NullPointerError的出现,一般采取校验Arrays是否为空,如下所示:

//getData
public Object[] getData(){
Object[] result=null;
//...
return result;
}

//调用
Object[] data=getData();
if(data!=null && data.length>0){
//do something
}

采用if(data!=null && data.length>0),可以避免上述的NullPointerError。如果代码中随处可见都是这样的代码,就是一种代码臭味:重复代码。不仅如此,还很难发现拼写错误(可以借助JUnit单元测试工具来发现,我们要讨论并引入一种更合适的方式从根本上避免此类问题的发生。)

考虑引入一个ArrayUtil类,
public class ArrayUtil{
private ArrayUtil(){}
public static boolean foreachable(Object[] os){
if(os!=null && os.length>0)
return true;
return false;
}
}

从而调用端可以简化为,
//调用
Object[] data=getData();
if(ArrayUtil.foreachable(data)){
//do something
}

仅多了一层函数调用,但带来了简洁、统一的代码。ArrayUtil还可以处理Collection接口以支持所有容器,如下所示:
import java.util.Collection;
public class ArrayUtil{
private ArrayUtil(){}
public static boolean foreachable(Object[] os){
if(os!=null && os.length>0)
return true;
return false;
}
public static boolean foreachable(Collection collection){
if(collection!=null && collection.size()>0)
return true;
return false;
}
}
评论
发表评论

您还没有登录,请登录后发表评论

zerozone
搜索本博客
最近加入圈子
存档
最新评论