0

所以我有以下内容:

Object a = data.getA();
Object b = data.getB();
Object c = data.getC();
// and so on

这些对象是从 API 调用中检索的,可能为空。我想将这些对象放入一个列表中,但前提是它们不为空。

我可以写一堆行:if(a!=null) {myList.add(a}等等。但我觉得有一种更优雅的方法可以避免每次都进行空值检查(除了创建一个辅助方法来执行此操作)。

例如,使用 javascript,我可以创建一个闭包。对 Java 有什么想法吗?

4

4 回答 4

7

实用方法怎么样?

public static <T> void addIfNotNull(Collection<T> col, T element){
    if(element != null){
        col.add(element);
    }
}
于 2011-04-14T12:34:25.340 回答
3

你可以试试Google Code 中的LambdaJ 项目,它在使用 Java 闭包方面非常成熟

过滤条件:

在给定条件下过滤集合的项目是一项非常常见的任务,使用 lambdaj 可以像以下示例一样简单:

List<Integer> biggerThan3 = filter(greaterThan(3), asList(1, 2, 3, 4, 5));

定义如何过滤列表的条件表示为hamcrest匹配器。

或者您可以等待 JDK 8 :-)

于 2011-04-14T12:44:32.933 回答
0
List list = new ArrayList();

add(data.getA());
add(data.getB());
add(data.getC());

private add(Object o) {
    if (o != null) {
        list.add(o);
    }
}
于 2011-04-14T12:35:10.237 回答
0

您可以使用 Maybe 概念: http: //www.natpryce.com/articles/000776.html

于 2011-04-14T13:03:02.337 回答