public class MethodRefTest {
@Test
public void test1() {
Consumer<String> con1 = str -> System.out.println(str);
con1.accept(
"中国"
);
System.out.println(
"===================="
);
PrintStream ps = System.out;
Consumer con2 = ps::println;
con2.accept(
"China"
);
}
@Test
public void test2() {
Employee emp =
new
Employee(1001,
"Bruce"
, 34, 600);
Supplier<String> sup1 = () -> emp.getName();
System.out.println(sup1.get());
System.out.println(
"===================="
);
Supplier sup2 = emp::getName;
System.out.println(sup2.get());
}
@Test
public void test3() {
Comparator<Integer> com1 = (t1, t2) -> Integer.compare(t1, t2);
System.out.println(com1.compare(32, 45));
System.out.println(
"===================="
);
Comparator<Integer> com2 = Integer::compareTo;
System.out.println(com2.compare(43, 34));
}
@Test
public void test4() {
Function<Double, Long> func =
new
Function<Double, Long>() {
@Override
public Long apply(Double aDouble) {
return
Math.round(aDouble);
}
};
System.out.println(func.apply(10.5));
System.out.println(
"===================="
);
Function<Double, Long> func1 = d -> Math.round(d);
System.out.println(func1.apply(12.3));
System.out.println(
"===================="
);
Function<Double, Long> func2 = Math::round;
System.out.println(func2.apply(12.6));
}
@Test
public void test5() {
Comparator<String> com1 = (s1, s2) -> s1.compareTo(s2);
System.out.println(com1.compare(
"abd"
,
"aba"
));
System.out.println(
"===================="
);
Comparator<String> com2 = String::compareTo;
System.out.println(com2.compare(
"abd"
,
"abc"
));
}
@Test
public void test6() {
BiPredicate<String, String> pre1 = (s1, s2) -> s1.equals(s2);
System.out.println(pre1.test(
"abc"
,
"abc"
));
System.out.println(
"===================="
);
BiPredicate<String, String> pre2 = String::equals;
System.out.println(pre2.test(
"abc"
,
"abd"
));
}
@Test
public void test7() {
Employee employee =
new
Employee(1001,
"Tom"
, 45, 10000);
Function<Employee, String> func1 =e->e.getName();
System.out.println(func1.apply(employee));
System.out.println(
"===================="
);
Function<Employee,String>func2 = Employee::getName;
System.out.println(func2.apply(employee));
}
}