OnJava8-Examples/functional/RunnableMethodReference.java

40 lines
959 B
Java
Raw Normal View History

2015-11-14 16:18:05 -08:00
// functional/RunnableMethodReference.java
// <20>2016 MindView LLC: see Copyright.txt
2015-11-15 15:51:35 -08:00
// We make no guarantees that this code is fit for any purpose.
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
2015-06-15 17:47:35 -07:00
// Demonstrates method references
class External {
2015-11-03 12:00:44 -08:00
static void go() { System.out.println("External.go()"); }
2015-06-15 17:47:35 -07:00
}
public class RunnableMethodReference {
Runnable robject, rstatic, rexstatic;
2015-11-03 12:00:44 -08:00
void f() { System.out.println("f()"); }
static void g() { System.out.println("g()"); }
2015-06-15 17:47:35 -07:00
public void assign() {
robject = this::f;
rstatic = RunnableMethodReference::g;
rexstatic = External::go;
}
public void call() {
robject.run();
rstatic.run();
rexstatic.run();
}
public static void main(String[] args) {
RunnableMethodReference rmr =
new RunnableMethodReference();
rmr.assign();
rmr.call();
rmr.robject = rmr::f;
rmr.robject.run();
}
2015-09-07 11:44:36 -06:00
}
/* Output:
2015-06-15 17:47:35 -07:00
f()
g()
External.go()
f()
2015-09-07 11:44:36 -06:00
*/