案例:函数式接口作为方法的返回值类型
package com.chunzhi.Test03LambdaTest; import java.util.Arrays; import java.util.Comparator; /* 如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式 当需要通过一个方法获取一个java.util.Comparator接口类型的对象作为排序器时,就可以调该方法获取。 */ public class Test02Comparator { // 定义一个方法,方法的返回值类型使用函数式接口Comparator public static Comparator<String> getComparator() { // 方法的返回值是一个接口,那么我们可以返回这个接口的匿名内部类 /*return new Comparator<String>() { @Override public int compare(String o1, String o2) { // 按照字符串的降序排序 return o2.length() - o1.length(); } };*/ // 方法的返回值类型是一个函数式接口,所以我们可以返回一个Lambda表达式 /* return (String o1, String o2) -> { return o2.length() - o1.length(); };*/ // 优化Lambda表达式 return (o1, o2) -> o2.length() - o1.length(); } public static void main(String[] args) { // 创建一个字符串数组 String[] arr = {"aaaaa", "ooooooo", "sssssssss", "llll"}; // 排序前数组 System.out.println(Arrays.toString(arr)); // 调用Arrays中的sort方法,对字符串数组进行排序 Arrays.sort(arr, getComparator()); // 排序后的数组 System.out.println(Arrays.toString(arr)); } }