以下のコードを検討してください。
class DemoStatic {
public static Runnable testStatic() {
return () -> {
System.out.println("Run");
};
}
public void runTest () {
Runnable r = DemoStatic::testStatic;
r.run();
}
}
public class MethodReferenceDemo {
public static void main(String[] args) {
DemoStatic demo = new DemoStatic();
demo.runTest();
}
}
run()
メソッドRunnable
によって返されているインスタンスのtestStatic
メソッドが呼び出されるはずでした。コンソールの出力は「実行」である必要があります。
しかし、このコードはrun()
インスタンスのメソッドを呼び出しておらずr
、コンソールに何も出力されていません。
どなたか理由を教えてください。
メソッド参照 "::" を適切に使用していない場合はコメントしてください。