I have following class which contains map containing generics of list of objects. I need to put a method addElement() and kind of confused about type of object.
What should be type of argument on method addElement() ???
public class Tester{
private final ConcurrentMap<Date, List<? extends BaseObject>> map = new ConcurrentHashMap<>();
...
...
public void addElement(Date d, BaseObject o){
...
...
List<? extends BaseObject> list = map.get(d);
if (null == list) {
list = new ArrayList<>();
}
//add element
list.add(o);<-------------- Compile error
map.put(d,list);
}
}
Solution Changing code to following will fix the issue, LINK
public class Tester{ private final ConcurrentMap> map = new ConcurrentHashMap<>();
...
...
public void addElement(Date d, BaseObject o){
...
...
List<? super BaseObject> list = map.get(d);
if (null == list) {
list = new ArrayList<>();
}
//add element
list.add(o);<-------------- Compile error fixed
map.put(d,list);
}
}