方法在类型 Map<String,capture#1-of ?扩展对象>不适用

2022-09-01 16:01:26

由于接口,我实现了以下方法:JAVA

public String importDocument(ImportSource source, Map<String, ? extends Object> paramMap);

当我尝试执行以下操作时,我收到编译警告。片段:

paramMap.put("Key", "Value");

错误:

Map 类型中的方法 put(String, capture#1-of ? extends Object) 不适用于参数(String, String)

为什么?


答案 1
? extends Object

您正在使用通用通配符。不能执行添加操作,因为类类型不是确定的。你不能添加/放置任何东西(空值除外)。

有关使用通配符的更多详细信息,您可以参考 oracle 文档

Collection<?> c = new ArrayList<String>();
c.add(new Object()); // Compile time error

由于我们不知道c的元素类型代表什么,因此我们无法向其添加对象。该方法采用 的参数,集合的元素类型。当实际类型参数为 时,它代表一些 。我们传递到添加的任何参数都必须是此未知类型的子类型。由于我们不知道那是什么类型,因此我们无法传入任何内容。add()type E?unknown typeThe sole exception is null, which is a member of every type


答案 2

推荐