0

在开发时,我试图返回一个空List

public Collection<?> getElements() {
    // return elements
}

我寻找了一种简单的方法,我的第一个想法是创建例如一个没有任何元素的ArrayList并返回它。像下面的例子:

public Collection<?> getElements() {
    return new ArrayList<?>();
}

对我来说,空列表的开销太大了。

4

1 回答 1

2

对于上述“问题”,有一个非常简单的解决方案:

public Collection<?> getElements() {
    return Collections.EMPTY_LIST;
}

这将返回一个空列表。

注意:
它返回一个不可变对象!如果您需要一个不可编辑的对象,您只能使用它。

类型安全
如果你想获得一个类型安全的列表,你应该使用下面的例子 [ 1 ]:

List<String> s = Collections.emptyList();

支持三种接口:

  • 清单

    List l = Collections.EMPTY_LIST;
    List<String> s = Collections.emptyList();
    
  • 地图

    Map m = Collections.EMPTY_MAP;
    Map<String> ms = Collections.emptyMap();
    
  • 设置

    Set s = Collections.EMPTY_SET;
    Set<String> ss = Collections.emptySet();
    

注意:

此方法的实现不需要为每个调用创建单独的 XXX 对象。使用此方法的成本可能与使用同名字段的成本相当。(与此方法不同,该字段不提供类型安全。)

于 2012-08-31T11:05:50.360 回答