版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbingfengf98/article/details/86557748
// functional/ClassFunctionals.java
// (c)2017 MindView LLC: see Copyright.txt
// We make no guarantees that this code is fit for any purpose.
// Visit http://OnJava8.com for more book information.
import java.util.*;
import java.util.function.*;
class AA {}
class BB {}
class CC {}
public class ClassFunctionals {
static AA f1() {
return new AA();
}
static int f2(AA aa1, AA aa2) {
return 1;
}
static void f3(AA aa) {}
static void f4(AA aa, BB bb) {}
static CC f5(AA aa) {
return new CC();
}
static CC f6(AA aa, BB bb) {
return new CC();
}
static boolean f7(AA aa) {
return true;
}
static boolean f8(AA aa, BB bb) {
return true;
}
static AA f9(AA aa) {
return new AA();
}
static AA f10(AA aa1, AA aa2) {
return new AA();
}
public static void main(String[] args) {
Supplier<AA> s = ClassFunctionals::f1;
System.out.println(s.get());
Comparator<AA> c = ClassFunctionals::f2;
System.out.println(c);
System.out.println(c.compare(new AA(), new AA()));
Consumer<AA> cons = ClassFunctionals::f3;
cons.accept(new AA());
BiConsumer<AA, BB> bicons = ClassFunctionals::f4;
bicons.accept(new AA(), new BB());
Function<AA, CC> f = ClassFunctionals::f5;
CC cc = f.apply(new AA());
BiFunction<AA, BB, CC> bif = ClassFunctionals::f6;
cc = bif.apply(new AA(), new BB());
Predicate<AA> p = ClassFunctionals::f7;
boolean result = p.test(new AA());
BiPredicate<AA, BB> bip = ClassFunctionals::f8;
result = bip.test(new AA(), new BB());
UnaryOperator<AA> uo = ClassFunctionals::f9;
AA aa = uo.apply(new AA());
BinaryOperator<AA> bo = ClassFunctionals::f10;
aa = bo.apply(new AA(), new AA());
}
}
/* My Output:
AA@87aac27
ClassFunctionals$$Lambda$2/1406718218@e9e54c2
1
*/
As we just saw, once the method reference is assigned to a functional interface, we can call the functional method associated with that interface.
references:
1. On Java 8 - Bruce Eckel
3. https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#compare-T-T-
4. https://github.com/wangbingfeng/OnJava8-Examples/blob/master/functional/ClassFunctionals.java