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

compiler-errors, generics, java

Solution

? extends Object

You are using generic wildcard. You cannot perform add operation as class type is not determinate. You cannot add/put anything(except null).

For more details on using wildcard you can refer oracle docs.

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

Since we don't know what the element type of c stands for, we cannot add objects to it. The `add()` method takes arguments of `type E`, the element type of the collection. When the actual type parameter is `?`, it stands for some `unknown type`. Any parameter we pass to add would have to be a subtype of this unknown type. Since we don't know what type that is, we cannot pass anything in. `The sole exception is null, which is a member of every type`.

Problem

I have the following `JAVA` method implemented due a interface: ``` public String importDocument(ImportSource source, Map<String, ? extends Object> paramMap); ``` When i try to do following, i get an compile warning. Snippet: ``` paramMap.put("Key", "Value"); ``` Error: The method put(String, capture#1-of ? extends Object) in the type Map is not applicable for the arguments (String, String) Why?

Original source

Related problems