进一步简化Lambda表达式
一、静态方法的引用
格式: 类名::静态方法
使用场景:如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。
之前使用Lambda简化:
现在我们创建一个类:
然后简化:
二、实例方法的引用
格式: 对象名::实例方法
使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。
创建一个实例方法:
然后简化:
三、特定类型方法的引用
格式: 类型::方法
使用场景:如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法入参的,则此时就可以使用特定类型的方法引用。
import java.util.Arrays;
import java.util.Comparator;public class Test2 {public static void main(String[] args) {String[] names = {"apple","deep","ban","Abc","BBoy"};//对数组进行排序Arrays.sort(names);System.out.println(Arrays.toString(names)); //Abc BBoy apple ban deep 默认按照字符串的首字符编号进行升序排序//需求:要求忽略首字符大小写进行排序
// Arrays.sort(names, new Comparator<String>() {
// @Override
// public int compare(String o1, String o2) {
// //制定比较规则
// return o1.compareToIgnoreCase(o2); //自带的比较方法
// }
// });
// System.out.println(Arrays.toString(names));
简化上面那行代码的话,其实idea有快捷键:
然后再来一次:
最终简化为这样:
四、构造器引用
格式: 类名::new
使用场景:如果某个Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。
1.创建接口的匿名内部类对象
2.接收返回的对象
简化后:
再次简化: