当我执行以下代码时,它可以正常工作。

List<String> singletonList = Collections.singletonList("Hello");
List<String> s = Collections.emptyList();
singletonList.addAll(s);


但是,当我尝试执行以下操作时,会出现编译错误。为什么?

List<String> singletonList = Collections.singletonList("Hello");
singletonList.addAll(List<String> Collections.emptyList());


Collections.emptyList是创建空列表的一种类型安全的方法。但是为什么我的程序不编译呢?我知道我不能添加到不可变列表(UnsupportedOperationException),但是允许添加一个空列表。实际上,我正在对此进行测试,并且注意到了上述问题。

最佳答案

Collections.emptyList()返回的List<Object>不是List<String>(与它没有任何类型关系),所以不允许强制转换。

您需要的是以下内容:

singletonList.addAll(Collections.<String>emptyList());

关于java - 添加到空列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23141323/

10-09 00:04