Java8新特性 方法引用
import java.util.function.BiPredicate;
import java.util.function.Consumer;
import java.util.function.Function;
public class MethodReferenceTest {
public static void main(String[] args) {
// Lambda表达式
Consumer<String> consumer = (s) -> System.out.println(s);
consumer.accept("猫和老鼠!");
// 可以简化为以下方式
Consumer<String> consumer1 = System.out::println;
consumer1.accept("方法引用 -> 猪和老鼠!");
// 类名::静态方法名
Function<Long, Long> function = Math::abs;
System.out.println("类名::静态方法名 -> " + function.apply(-55L));
// 类名::实例方法名
BiPredicate<String, String> biPredicate = String::equals;
System.out.println("类名::实例方法名 -> " + biPredicate.test("a", "b"));
// 引用构造器
Function<Integer, StringBuffer> function1 = StringBuffer::new;
StringBuffer buffer = function1.apply(10);
buffer.append("溜");
System.out.println("引用构造器 -> "+buffer.length());
// 引用数组
Function<Integer, int[]> fun = int[]::new;
int[] arr = fun.apply(10);
System.out.println("引用数组 -> "+arr.length);
}
}
结果
猫和老鼠!
猪和老鼠!
类名::静态方法名 -> 55
类名::实例方法名 -> false
引用构造器 -> 1
引用数组 -> 10