java – 迭代器空集合
发布时间:2020-12-14 17:47:26 所属栏目:Java 来源:网络整理
导读:很常见的是,在不确定集合引用为空的情况下,必须先检查null,否则返回null. 样品: CollectionObject collection = ......if(collection != null)//troublesome for(Object o : collection) 当然,我知道空集合比null好得多,但在某些情况下,客户端代码无法控制
很常见的是,在不确定集合引用为空的情况下,必须先检查null,否则返回null.
样品: Collection<Object> collection = ... ... if(collection != null)//troublesome for(Object o : collection) 当然,我知道空集合比null好得多,但在某些情况下,客户端代码无法控制其他模块的可空值集合(例如,从第三方代码返回值). public static <T> Iterable<T> nullableIterable(Iterable<T> it){ return it != null ? it : Collections.<T>emptySet(); } 在客户端代码中,无需再检查null: for(Object o : nullableIterable(collection)) ... 你认为nullableIterable()是否合理?任何建议?有什么关系?谢谢! 解决方法
看起来不错.我个人也这样做.你会永远得到开发人员不同意这一点,因为它是一种防御性的程序设计.想象一下,你有一个工作流或一个不应该返回null的类.这意味着从它获取一个null是你的代码将隐藏的一个错误,因为它会将null变成一个空集合,并且该错误永远不会出现.
如果你是编写不支持null集合的API,那么你应该避免这种情况.如果客户端代码为您提供不支持的空集合,那么您应该抛出一个IllegalArgumentException,让客户端代码知道提供的集合有问题.就像是: public void myApiNoSupportForNull(Collection<Object> collection){ // Pre condition if(collection == null) throw new IllegalArgumentException("This API does not support null collections!"); //... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- TreeSet判断重复元素解析及代码示例
- 是否有适用于Java的控制台GUI小部件? Eclipse Console视图
- SpringBoot定义过滤器、监听器、拦截器的方法
- java:new File(“”,“name”)!= new file(“name”)? (
- Java中C#匿名方法的等价物?
- java – JSP – 日期格式和Google缓存
- String和StringBuilder、StringBuffer的区别?
- java – JsonMappingException没有单String构造函数/工厂方
- JAVA解析XML与C#解析XML(DOM,SAS,JDOM,DOM4J)
- java – 显示异构项列表时要采取的设计方法