我想找到像Apache Commons这样的API,它可以轻松地返回一个集合。
目的是生成在收集迭代之前不需要NPE检查或CollectionUtils.isNotEmpty检查的代码。代码中的假设是始终保证列表实例,从而消除每次集合迭代的代码复杂性。
这是一个方法的示例,但我想要一个API,而不是自己滚动。
private List<Account> emptyCollection(
List<Account> requestedAccounts) {
if (CollectionUtils.isNotEmpty(requestedAccounts)) {
return requestedAccounts;
} else {
return new ArrayList<Account>();
}
}
我想找到一个可以普遍用于任何类的通用API /方法。
以下是我在公共场所的一些研究课程,可以帮助我做到这一点。 http://commons.apache.org/collections/apidocs/org/apache/commons/collections/TransformerUtils.html
http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html
也许.collect可能使用变压器。
我也愿意使用替代API。
答案 0 :(得分:3)
这是你的意思吗?
public static <T> List<T> nullToEmpty(List<T> list) {
if (list != null) {
return list;
}
return Collections.emptyList();
}
答案 1 :(得分:0)
你的问题有点难以理解,你只是想避免NPE,还是想避免CollectionUtil.isNotEmpty? 第一个非常简单,第二个不是这样,因为您基本上希望保证您的API将始终返回至少包含一个元素的Collection。 这是一个以业务为中心的约束IMO,而不是通过API合同可以保证的。
如果你想要避免的只是NPE,你可以使用java.lang.Collections.EMPTY_(SET | MAP | LIST)类。但请注意,这些是不可变的,即调用代码,不能将对象添加到以这种方式返回的集合中。如果您希望调用代码改变Collection(即添加/删除/更新元素),那么您将必须返回LIST | MAP | SET等的零元素具体实现。