我可以使用Collections.EMPTY_LIST没有UncheckedException吗?

时间:2008-10-03 23:16:54

标签: generics java

我的Java程序中是否存在使用Collection.EMPTY_LIST的通用友好方式。

我知道我可以自己声明一个,但我很想知道JDK是否有办法做到这一点。

users = Collections<User>.EMPTY_LIST;

这样的东西

3 个答案:

答案 0 :(得分:31)

通过执行以下操作:

List<User> users = Collections.emptyList();

由于作业的左侧,Collections.emptyList();返回列表的类型将推断String。但是,如果您不想进行此推断,可以通过执行以下操作明确定义它:

List<User> users = Collections.<User>emptyList(); 

在这个特定的例子中,对于大多数人来说这可能是多余的(事实上,我已经看到很少使用显式类型参数的代码),但对于具有签名的方法:{{ 1}}如果使用显式类型参数调用void doStuff(List<String> users),则完全干净如下:

doStuff()

答案 1 :(得分:1)

List<User> users = Collections.emptyList();

答案 2 :(得分:1)

创建空列表后,我建议将其存储为常量,而不是每次都创建一个新列表。

此外,使用Collections.emptyList()new ArrayList(0)有性能优势,但差异可能很小。 emptyList()返回的列表被优化为不可变的空列表。例如,size()方法只返回0,而不是字段查找或ArrayList所做的。