Second answer:
Is this relevant to this particular case? I think in this example we are only reading from the list, not adding anything.List<?>
(...) Thus, this will not allow you to add anything to it because the compiler doesn't know the exact class of objects contained by the list so it cannot check (...)
Would I then be right to interpret this explanation in this way?
Since we are assigning an element from the List to Number variable (Number n = list.get(0);) we need to be sure it can only be a Number. With List<?> we could get anything and if it was e.g. an Object, we would not be able to assign it to Number.