本文主要是介绍方法引用(进一步简化Lambda),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
静态方法的引用
格式:类名::静态方法。
场景:如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。
//静态方法的引用
Arrays.sort(cooking, CompareByData::compareByPrice);public class CompareByData{public static int compareByPrice(Cooking o1, Cooking o2){return o1.price - o2.price;}
}
实例方法的引用
格式:对象名::实例方法。
场景:如果某个Lambda表达式里只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。
//实例方法的引用
CompareByData com = new CompareByData();
Arrays.sort(cooking, com::compareByPriceD);public class CompareByData{public static int compareByPrice(Cooking o1, Cooking o2){return o1.price - o2.price;}public int compareByPriceD(Cooking o1, Cooking o2){return o1.price - o2.price;}
}
特定类型方法的引用
格式:类型::方法。
场景:如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。
//特定类型方法的引用
String[] names = {"a", "D", "b", ""S};
Arrays.sort(names, String::compareToIgnoreCase);
构造器引用
格式:类名::new。
场景:如果某个Lambda表达式里只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。
//构造器引用
CreateCooking cc = Cooking::new;
这篇关于方法引用(进一步简化Lambda)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!