바운드된 와일드카드를 사용할 수 있는 제네릭 메서드 매개변수를 보고합니다.

예:


  void process(Consumer<Number> consumer);

다음으로 바꿔야 합니다.


  void process(Consumer<? super Number> consumer);

이 메서드 시그니처는 더 많은 타입을 허용하므로 더 유연합니다(Consumer<Number>뿐만 아니라 Consumer<Object>도 허용).

마찬가지로, 공변성 위치에 있는 타입 매개변수도 허용합니다.


  T produce(Producer<T> p);

다음으로 바꿔야 합니다.


  T produce(Producer<? extends T> p);

Effective Java 3판에서 Joshua Bloch의 말을 인용하면 다음과 같습니다.

항목 31: 바운드된 와일드카드를 사용하여 API 유연성 향상

까다롭기는 하지만, API에서 와일드카드 타입을 사용하면 API의 유연성이 훨씬 더 높아집니다. 광범위하게 사용될 라이브러리를 작성하는 경우, 와일드카드 타입의 적절한 사용을 반드시 고려해야 합니다. 프로듀서-extends, 컨슈머-super(PECS)라는 기본 규칙을 기억하세요. 또한 모든 Comparable 및 Comparator가 컨슈머인 것도 기억하세요.

보고 대상을 전환하려면 검사 옵션을 사용하세요.