JavaAdvanced#generics

Difference between '? extends T' and '? super T'?

'? 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.

Example
void copy(List<? extends Number> src, List<? super Integer> dest) {
  for (Number n : src) dest.add((Integer) n); // read from src, write to dest
}

Related Questions

1
JavaAdvanced#concurrency#jvm

What is the Java Memory Model (JMM)?

Open
2
JavaAdvanced#spring

Explain Spring Bean lifecycle.

Open
3
JavaIntermediate#spring

What is the difference between Spring Boot and Spring Framework?

Open