I am studying Generics in java. I made a Map and initialized with 'new HashMap>()'. After that, I made an ArrayList to put into that variable. However, this code can not compile.
error message is:
"The method put(String, capture#1-of ? extends List) in the type Map> is not applicable for the arguments (String, List)"
on Map.put() method.
My code is below.
package org.owls.generic.main;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
ArrayList<String> tmpArr = new ArrayList<String>();
tmpArr.add("A");
tmpArr.add("B");
List<?> value = new ArrayList<String>(tmpArr);
Map<String, ? extends List<String>> testMap = new HashMap<String, List<String>>();
testMap.put("K", value);
}
};
I can not understand why compiler looks type, even I assigned inheritanced Class which is 'List'.
Sorry for my poor English and edit will be welcomed. Thanks for your answer:D