静态方法的引用
格式:类名::静态方法。
场景:如果某个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;
标签:price,Cooking,简化,引用,方法,o2,o1,Lambda
From: https://blog.csdn.net/2301_81718046/article/details/139187058