我的Java程序中是否存在使用Collection.EMPTY_LIST的通用友好方式。
我知道我可以自己声明一个,但我很想知道JDK是否有办法做到这一点。
像users = Collections<User>.EMPTY_LIST;
答案 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所做的。