Java8方法引用及构造方法引用原理实例解析

  

Java8方法引用及构造方法引用原理实例解析

Java 8中引入了方法引用(Method Reference)的语法,可以根据Lambda表达式,快速地指向一个已有方法,从而简化编程。

方法引用使用“::”符号来定位某个方法,并用Lambda表达式将方法和函数式接口绑定在一起,从而由Java编译器自动完成Lambda表达式的类型推断。

方法引用的语法格式为:

方法引用的简写格式:“方法所属的类或对象::方法名”

类静态方法引用:"类名::静态方法名"
对象实例方法引用:"对象实例::实例方法名"

构造方法引用的语法格式为:

构造方法引用的简写格式:“类名::new”

方法引用示例

import java.util.Arrays;
import java.util.List;

public class MethodReferenceDemo {
    public static void main(String[] args) {
        List<String> cities = Arrays.asList("beijing", "shanghai", "shenzhen", "guangzhou");
        cities.sort(String::compareToIgnoreCase);
        cities.forEach(System.out::println);
    }
}

在上面的示例代码中,我们使用了方法引用的语法,将String的compareToIgnoreCase方法和Comparator接口中的compare方法进行了绑定。由于List的sort方法需要传入一个Comparator对象,而这里我们使用了方法引用,相当于传入了一个Comparator对象的实现,完成了字符串的排序。

构造方法引用示例

import java.util.function.Supplier;

public class ConstructorReferenceDemo {
    public static void main(String[] args) {
        Supplier<String> supplier = String::new;
        String helloWorld = supplier.get();
        System.out.println(helloWorld);
    }
}

在上面的示例代码中,我们使用了构造方法引用的语法,将String类的无参构造方法和Supplier接口进行了绑定,并使用get方法创建了一个字符串对象。实际上,这里的代码可以使用Lambda表达式替代,如下所示:

Supplier<String> supplier = () -> new String();
相关文章