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

All*_*nde 15 java generics

在我的Java程序中是否有使用Collection.EMPTY_LIST的Generics友好方式.

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

就像是 users = Collections<User>.EMPTY_LIST;

Rya*_*chi 31

通过执行以下操作:

List<User> users = Collections.emptyList();
Run Code Online (Sandbox Code Playgroud)

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

List<User> users = Collections.<User>emptyList(); 
Run Code Online (Sandbox Code Playgroud)

在这个特定的例子中,对于大多数人来说这可能看起来是多余的(事实上,我在野外看到很少使用显式类型参数的代码),但是对于带有签名的方法:void doStuff(List<String> users)它会非常干净一个doStuff()用显式类型参数调用,如下所示:

doStuff(Collections.<String>emptyList());
Run Code Online (Sandbox Code Playgroud)

  • 每当你在一个方法中写下一个明确的类型参数时,上帝会杀死一只小猫(我认为这是josh bloch说的这个) (2认同)