回答編集履歴

1

無名クラス化

2018/10/31 18:45

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,3 +1,27 @@
1
1
  現在、isValidメソッドはstaticメソッドではないため、インスタンスなしに起動することが出来ないのです。
2
2
 
3
3
  staticメソッドであればクラス名からだけでアクセスできるので、その修正で動くのです。
4
+
5
+
6
+
7
+ メソッド参照の形だとわかりにくいのですが、filterの部分を無名クラスとして書くとこうなります。
8
+
9
+ ```java
10
+
11
+ .filter(new Predicate<Item>(){
12
+
13
+ public boolean test(Item i) {
14
+
15
+ return Item.ItemFilter.isValid(i); // コンパイルエラー
16
+
17
+ }
18
+
19
+ })
20
+
21
+ ```
22
+
23
+ こう書くとおかしなことであることが少しわかりやすいのではないでしょうか。
24
+
25
+ ItemFilterまではstaticなのでインスタンスなしでクラス名だけでアクセスできるのですが、
26
+
27
+ isValidはItemFilterのインスタンスからでないと使えないメソッドです。