1
JavaAdvanced#concurrency#jvm
'? extends T' is an upper bound — produce T values, don't add (PECS: Producer Extends). '? super T' is a lower bound — consume T values (Consumer Super). Helps make APIs flexible.
void copy(List<? extends Number> src, List<? super Integer> dest) {
for (Number n : src) dest.add((Integer) n); // read from src, write to dest
}