class NonCapturing { public static void main(String... args) { run(NonCapturing::sayHi); } private static void run(Runnable run) { run.run(); } private static void sayHi() { System.out.println("Hey!"); } } class Capturing { public static void main(Capturing instance) { run(instance::sayHi); } private static void run(Runnable run) { run.run(); } void sayHi() { System.out.println("Hey!"); } }