Wildcards

?, ? extends, ? super

6 min read

Wildcards

Wildcards make generics more flexible when exact types are unknown.

  • ? → unknown type
  • ? extends T → upper bound
  • ? super T → lower bound

Code Examples

Upper bounded wildcard

java
1
2void printNumbers(List<? extends Number> list) {
3    for (Number n : list) {
4        System.out.println(n);
5    }
6}
7          

Use Cases

  • Read-only APIs
  • Flexible method parameters

Common Mistakes to Avoid

  • Adding elements to ? extends
  • Confusing extends vs super