代码之家  ›  专栏  ›  技术社区  ›  Allain Lalonde

我可以使用collections.empty_list而不取消选中exception吗?

  •  15
  • Allain Lalonde  · 技术社区  · 16 年前

    在我的Java程序中是否有一种泛型友好的方法使用Copys.EMPTyjList.

    我知道我可以自己声明一个,但我只是好奇知道JDK中是否有这样做的方法。

    类似的东西 users = Collections<User>.EMPTY_LIST;

    3 回复  |  直到 16 年前
        1
  •  31
  •   Ryan Delucchi    16 年前

    通过执行以下操作:

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

    返回列表的类型 Collections.emptyList(); 推断 作为一个 String 因为任务的左侧。但是,如果您不希望进行这种推理,可以通过执行以下操作来显式定义它:

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

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

    doStuff(Collections.<String>emptyList());
    
        2
  •  1
  •   Steve Kuo    16 年前
    List<User> users = Collections.emptyList();
    
        3
  •  1
  •   Adam Crume    16 年前

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

    此外,使用 Collections.emptyList() 对战 new ArrayList(0) 尽管差异可能很小。EmptyList()返回的列表已优化为不可变的空列表。例如,size()方法只返回0,而不是字段查找或任何ArrayList所做的操作。