所以我有以下内容:
Object a = data.getA();
Object b = data.getB();
Object c = data.getC();
// and so on
这些对象是从API调用中检索的,可能为null。我想将这些对象放入List中,但前提是它们不是null。
我可以写一堆行:if(a!=null) {myList.add(a}
等等。但我觉得有一种更优雅的方法可以避免每次都进行空检查(除了创建辅助方法来执行此操作)。
例如,使用javascript,我可以创建一个闭包。有关Java的任何想法吗?
答案 0 :(得分:7)
实用方法怎么样?
public static <T> void addIfNotNull(Collection<T> col, T element){
if(element != null){
col.add(element);
}
}
答案 1 :(得分:3)
您可以在Google Code中尝试Project LambdaJ,在使用Java闭包方面非常成熟
根据条件过滤:
在给定条件下过滤集合的项目是一项非常常见的任务,使用lambdaj可以像下面的示例一样简单:
List<Integer> biggerThan3 = filter(greaterThan(3), asList(1, 2, 3, 4, 5));
定义如何过滤列表的条件表示为hamcrest匹配器。
或者您可以等待JDK 8: - )
答案 2 :(得分:0)
List list = new ArrayList();
add(data.getA());
add(data.getB());
add(data.getC());
private add(Object o) {
if (o != null) {
list.add(o);
}
}
答案 3 :(得分:0)
您可以使用Maybe概念:http://www.natpryce.com/articles/000776.html