Java返回一个空列表

时间:2015-02-09 09:52:35

标签: java arraylist return

我的Java方法如下;

public List<Lookup> findAll(String lang) {
    Query query = entityManager.createNamedQuery("Lookup.findAll");
    if (isValidLang(lang)) {
        query.setParameter("lang", lang);
        return query.getResultList();
    } else {
        //return empty list
    }
}

现在该方法返回列表以获取有效的lang匹配。

但如果不是这样,我想返回一个空列表。我的问题是如何更新代码&amp;返回空列表的最佳方法是什么,以便代码不会失败?

5 个答案:

答案 0 :(得分:25)

这应该这样做:

} else { 
    return Collections.emptyList();
}

答案 1 :(得分:6)

Collections.emptyList()会返回 不可变列表 ,即的列表,如果您要执行任何操作,则无法添加元素在列表上操作,然后创建列表的新实例并将其返回。

if (isValidLang(lang)) {
        query.setParameter("lang", lang);
        return query.getResultList();
    } else {
        return new ArrayList<Lookup>();  // return array list instance.
    }

答案 2 :(得分:3)

试试这样:

public List<Lookup> findAll(String lang) {
    List<Lookup> result = new ArrayList<Lookup>();
    Query query = entityManager.createNamedQuery("Lookup.findAll");
    if (isValidLang(lang)) {
        query.setParameter("lang", lang);
        result = query.getResultList();
    }
    return result;
}

答案 3 :(得分:3)

通过Java 9,您现在可以使用静态工厂方法List::of创建不可变的空列表:

} else { 
    return List.of();
}

答案 4 :(得分:1)

ternary operator (boolean_expression ? statement1 : statemetn2 )中使用java,我们可以检查每个返回类型是否为null。如果我们这样做一次,那么使用代码的每个调用方法都将受益,因为它们不必检查null。您的代码可以像这样重写 -

public List<Lookup> findAll(String lang) {
    Query query = entityManager.createNamedQuery("Lookup.findAll");
    ArrayList lookupList = null;

    if (isValidLang(lang)) {
        query.setParameter("lang", lang);
        lookupList = <ArrayList> query.getResultList();
    }

    return (null != lookupList ? lookupList : Collections.EMPTY_LIST);
}