境界ワイルドカードを使用可能な一般的なメソッドパラメーターを報告します。

例:


  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 がコンシューマーであることも覚えておいてください。

報告対象を切り替えるには、インスペクションのオプションを使用します。