lambda表达式的四种方法引用

在使用Lambda表达式时,Java中规定了四种情况的简写方式,使得代码更加简洁!

假设创建了一个学生类和一个学生对象

public class Student implements Comparable<Student> {
    int score;
    String name;
    
	@Override
    public int compareTo(Student o) {
        return this.score - o.score;
    }
    public Student() {
    }

    public Student(int score, String name) {
        this.score = score;
        this.name = name;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class text3 {
    public static void main(String[] args) {
        //自定义比较规则
        Student s1 = new Student(35,"hh");
        }
}

1.静态方法的引用

格式

类名 :: 静态方法

如果Lambda表达式只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。

例如:

在自定义排序规则时可能会出现下面的代码,

简化前:

ArrayList<Student> students = new ArrayList<>;
Arrays.sort(students,(o1 , o2) -> CompareByDate.compareByAge(o1 , o2));

引用静态方法简化后:

Arrays.sort(students,CompareByDate::compareByAge);

2.实例方法的引用

格式

对象名 :: 实例方法

如果Lambda表达式只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。
例如:

简化前:

ArrayList<Student> students = new ArrayList<>;
Student s = new Student();
Arrays.sort(students,(o1 , o2) -> s.compareByAge(o1 , o2));

引用实例方法简化后:

Arrays.sort(students,s::compareByAge);

3. 特定类型的方法引用

格式

类型 :: 方法

如果Lambda表达式只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的参数都作为该实例方法的入参,就可以使用特定类型的方法引用。

		String[] s = new String[]{"hhh","h","kk","jjjj","uuu"};

        Arrays.sort(s, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareToIgnoreCase(o2);
            }
        });

4.构造器引用

格式

类名 :: new

如果Lambda表达式只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。

简化前:

s -> new Student(s);

简化后:

Student :: new;
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值