質問: qty; 6. } 7. static class ItemFilter { 8. public boolean isValid(Item i) { ⇒変更箇所 9. return i.qty >= 5; 10. } 11. } 12. } 内部クラスのインスタンス化(上:5行目).filter(Item.ItemFilter::isValid))がポイントとの事なんですが、全く理由が分かりません。 プロフェッショナルの方、ご教示いただけないでしょうか。
回答: コードにコメント入れてみました。 本来、行の上にコメントすべきところを、わざと下に入れてます。 ``` List items = Arrays.asList( new Item("りんご", 3), new Item("バナナ", 20)); // ---> リンゴの個数(3) < バナナの個数(20) items.stream() .filter(Item.ItemFilter::isValid) // ---> itemsの各要素にisValidメソッドを適用して(Item.ItemFilter::isValid(item))、返り値がtrueのものだけに絞る(フィルターする) // 今回の場合、バナナの個数だけ5個以上なので、バナナだけに絞られる .forEach(System.out::println); // ---> 絞った結果の各要素を出力する(System.out::println(item.toString())) public class Item { String name; int qty; public String toString() { return name; } public Item(String name, int qty) { this.name = name; this.qty = qty; } static class ItemFilter { // ---> staticなこと、内部クラスなことは、他の方の回答を参考に public boolean isValid(Item i) { ⇒変更箇所 return i.qty >= 5; // ---> 個数が5以上であればtrueを返す } } } ```