JavaのPECSについての質問です。
以下のブログ?を参考にしています。
http://qiita.com/pebblip/items/1206f866980f2ff91e77
以下のインターフェースを考える。
//型Tの値を消費する関数 interface Consumer<T> { void apply(T value); } //型Tの値をもつコンテナ interface Box<T> { //保持する値を返す T get(); //値を設定する void put(T element); //別のコンテナの値を設定する void put(Box<T> box); //Consumer関数を適用する void applyConsumer(Consumer<T> function); }
次に以下のコードについて考える。
public void foo(Box<Integer> intBox, Consumer<Integer> intConsumer, Consumer<Number> numConsumer) { intBox.applyConsumer(intConsumer); //OK intBox.applyConsumer(numConsumer); //コンパイルエラー }
「Integer型の要素を消費する Consumer<Integer> 型の関数を適用できるにもかかわらず、Number型の要素を消費するConsumer<Integer> の関数を適用できないのは直感に反している。」
とのことですが、直感に反しているでしょうか。
これを直感に反していると思えないのです。
「直感」ですので、説明するのは難しいかもしれませんが、どのように考えれば直感に反するのでしょうか。
回答お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。