下記コードについて、「”バナナ”と表示される為には以下のように変更すると出来る」と聞いたのですが、その理由が分かりません。
変更内容:(下:8行目)ItemFilterクラスのisValidメソッドをstaticメソッドに変更する
- List<Item> items = Arrays.asList(
- new Item("りんご", 3),
- new Item("バナナ", 20));
- items.stream()
- .filter(Item.ItemFilter::isValid)
- .forEach(System.out::println);
// Item クラスの実装
- 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 {
-
public boolean isValid(Item i) { ⇒変更箇所
-
return i.qty >= 5;
-
}
-
}
- }
内部クラスのインスタンス化(上:5行目).filter(Item.ItemFilter::isValid))がポイントとの事なんですが、全く理由が分かりません。
プロフェッショナルの方、ご教示いただけないでしょうか。
ありがとうございました。
回答2件
あなたの回答
tips
プレビュー