gpt4 book ai didi

Java返回一个空列表

转载 作者:太空狗 更新时间:2023-10-29 22:42:50 30 4
gpt4 key购买 nike

我的 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 的列表。

但如果不是这种情况,我想返回一个空列表。我的问题是如何更新代码以及返回空列表以使代码不会失败的最佳方法是什么?

最佳答案

如果您使用的是 java 9 或更高版本:

} else {
return List.of();
}

如果你被 9 之前的某个版本的 java 困住了:

} else { 
return Collections.emptyList();
}

注意事项:

  1. 这些构造是最有效的,因为它们重用空列表的现有实例,因此每次您请求一个空列表时,都不会创建新列表。但是,Java 中的对象分配成本非常低,所以这真的不是问题。
  2. List.of()Collections.emptyList() 返回的列表是 secret 不可变的。我所说的“ secret 地”是指它公开了变异方法,但是如果您错误地调用了这些方法中的任何一个,您将遇到运行时异常。在其他比 Java 更好的语言中(例如,在 Scala 中)存在不可变/不可修改的集合,但 Java 没有“开箱即用”的东西。因此,如果您在 2020 年坚持使用 Java,那么您就接受了并非所有集合都可以写入的可能性,尽管事实上它们看起来都可以写入。
  3. 一般来说,函数旨在返回不可变实体,因此如果您正在调用一个返回集合的函数,然后您打算修改该集合,那么您就错了。如果你真的需要一个你可以修改的集合,你应该编写你的函数,以便它填充一个你作为参数传递给它的可变列表,所以很明显,作为可变列表的所有者,你是自由的函数返回后进一步修改列表。

关于Java返回一个空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28406921/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com