关于java:类型Map< String中的方法,捕获#1-of?

Method in the type Map<String,capture#1-of ? extends Object> is not applicable

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

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

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

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

错误:

The method put(String, capture#1-of ? extends Object) in the type Map is not applicable for the arguments (String, String)

为什么?


1
? extends Object

您使用的是通用通配符。无法执行添加操作,因为类类型不确定。不能添加/放置任何内容(空值除外)。

有关使用通配符的更多详细信息,请参阅Oracle文档。

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

因为我们不知道C的元素类型代表什么,所以不能向它添加对象。add()方法接受集合元素类型type E的参数。当实际类型参数为?时,它代表一些unknown type。我们传递给add的任何参数都必须是此未知类型的子类型。因为我们不知道那是什么类型,我们不能传递任何东西。The sole exception is null, which is a member of every type