Accepting any list of a subtype
The upper bounded wildcard List<? extends Number> means "a list of some unknown type that is a Number" — so it accepts List<Integer>, List<Double>, or List<Number>. Reading is safe: whatever the element type is, it is a Number.
The trade-off: you cannot add to it. Java does not know whether the list is really a list of Integers or of Doubles, so nums.add(1) is a compile error. Read-only — that is why such a parameter is called a producer.