The upper bound wildcard in the method below means we can pass in a list that contains elements of type Object or any List containing elements of type which is subclass Object, I am not understanding why the following is not compiling, because string is subclass of Object:
public static void addSound(List<? extends Object> list) {
list.add("quack"); //does not compile
}