方法引用是一种函数式接口的另一种书写方式
方法引用分为三种,方法引用通过一对双冒号:: 来表示
静态方法引用,通过类名::静态方法名, 如 Integer::parseInt实例方法引用,通过实例对象::实例方法,如 str::substring构造方法引用,通过类名::new, 如 User::new
package com.github.mouday.demo;import java.util.function.Function;public class Demo {public static void main(String[] args) {// 使用双冒号:: 引用静态方法Function<String, Integer> fun = Integer::parseInt;Integer value = fun.apply("20");System.out.println(value);// 20// 使用双冒号:: 引用实例方法String content = "Hello";Function<Integer, String> func = content::substring;String result = func.apply(1);System.out.println(result);// ello// 使用双冒号:: 引用构造方法Function<Integer, Integer> intFunc = Integer::new;Integer ret = intFunc.apply(10);System.out.println(ret);// 10}}
将函数引用作为方法的参数
package com.github.mouday.demo;import java.util.function.Function;public class Demo {public static void main(String[] args) {Demo.sayHello(String::toUpperCase, "Hello");// HELLODemo.sayHello(String::toLowerCase, "Hello");// hello}public static void sayHello(Function<String, String> func, String text) {String result = func.apply(text);System.out.println(result);}}
参考
卧槽!你竟然不晓得Java中可以用 :: 吗?