没有任何内容的对象/空对象

时间:2012-08-31 11:05:50

标签: java list collections map set

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

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

我搜索了一个简单的方法,我的第一个想法是创建一个没有任何元素的 ArrayList 并返回它。如下例所示:

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

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

1 个答案:

答案 0 :(得分: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对象   每次通话。使用这种方法的成本可能相当   使用同名的字段。 (与此方法不同,该字段不会   提供类型安全。)