Array对象数组的foreachable
在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;
}
public static boolean foreachable(Collection collection){
if(collection!=null && collection.size()>0)
return true;
return false;
}
}
上面的if语句简化为,
Object[] data=getData();
if(ArrayUtil.foreachable(data)){
//do something
}
这样是不是更简洁、统一,坏处是多了一层函数调用。