回答編集履歴

1 fix

yohhoy

yohhoy score 6067

2016/08/09 12:25  投稿

オブジェクト指向の基本ルールの一つに、リスコフの置換原則(LSV; Liskov Substitution Principle)と呼ばれるものがあり、簡単に言ってしまえば「子クラスは親クラスとして扱えるべき」という法則です。今回の例であれば「`Integer`型インスタンスを`Number`型として扱えること」を意味します。
オブジェクト指向の基本ルールの一つに、リスコフの置換原則(LSP; Liskov Substitution Principle)と呼ばれるものがあり、簡単に言ってしまえば「子クラスは親クラスとして扱えるべき」という法則です。今回の例であれば「`Integer`型インスタンスを`Number`型として扱えること」を意味します。
この考え方を拡張すると「`Consumer<Integer>`型の代わりに`Consumer<Number>`型を渡しても良いのでは?」という"直感"になる、という論法でしょう。たぶん。
(私を含む大多数には)PECS原則はよく考えれば確かにねという類のルールでしょうから、特に違和感を持たれなかったのであれば問題ないと思いますよ。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る