- 作用:进一步进化laambda
- 是什么:方法的引用,方法引用的标志性符号: “::”
1静态方法的引用
1.1 为什么学
- 这个后面spring引用挺多的
- 静态方法不用创建对象,
怎么学
这个方法引用难学,现在有印象就行,将来遇到了再回来回顾,写代码的时候发现可以用方法引用简化再使用(面向结果编程)
1.2原来代码
package com.ruoyi.project;
public class CompareByDate {
public static int compareByAge(Student o1,Student o2){
return o1.getAge()-o2.getAge();
}
}
package com.ruoyi.project;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Student student1 = new Student("小1", 160.1, 13);
Student student2 = new Student("小2", 189.3000000002, 77);
Student student3 = new Student("小3", 189.3000000001, 43);
Student students[] = {student1, student2, student3};
// Arrays.sort(students, (o1, o2) -> o1.getAge()-o2.getAge();
Arrays.sort(students, (o1, o2) -> CompareByDate.compareByAge(o1, o2));
System.out.println(Arrays.toString(students));
}
}
1.3静态方法引用
package com.ruoyi.project;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Student student1 = new Student("小1", 160.1, 13);
Student student2 = new Student("小2", 189.3000000002, 77);
Student student3 = new Student("小3", 189.3000000001, 43);
Student students[] = {student1, student2, student3};
// Arrays.sort(students, (o1, o2) -> o1.getAge()-o2.getAge();
// Arrays.sort(students, (o1, o2) -> CompareByDate.compareByAge(o1, o2));
Arrays.sort(students, CompareByDate::compareByAge
System.out.println(Arrays.toString(students));
}
}
- 以上两种方法 运算结果都为
2 实例方法的引用
和静态方法区别:这个有创建实例
package com.ruoyi.project;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Student student1 = new Student("小1", 160.1, 13);
Student student2 = new Student("小2", 189.3000000002, 77);
Student student3 = new Student("小3", 189.3000000001, 43);
Student students[] = {student1, student2, student3};
//降序
CompareByDate compareByDate=new CompareByDate();
Arrays.sort(students, compareByDate::compareByAgeDesc);
System.out.println(Arrays.toString(students));
}
}
package com.ruoyi.project;
public class CompareByDate {
public static int compareByAge(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
//降序
public int compareByAgeDesc(Student o1, Student o2) {
return o2.getAge() - o1.getAge();
}
}
3特定类型方法的引用