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();
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8方法引用及构造方法引用原理实例解析 - Python技术站