可以使用 lambda 表达式来简化代码的格式包括:
-
函数式接口:
- 只有一个抽象方法的接口(称为函数式接口)可以使用 lambda 表达式。
ActionListener
是一个函数式接口,因为它有一个抽象方法actionPerformed
。
- 只有一个抽象方法的接口(称为函数式接口)可以使用 lambda 表达式。
-
简洁的单一方法实现:
- 当匿名内部类实现的接口只有一个方法时(即函数式接口),使用 lambda 表达式可以让代码更加简洁。Lambda 表达式的基本形式是
(参数列表) -> 表达式
或(参数列表) -> { 语句块 }
。
- 当匿名内部类实现的接口只有一个方法时(即函数式接口),使用 lambda 表达式可以让代码更加简洁。Lambda 表达式的基本形式是
-
避免冗长的匿名内部类:
- Lambda 表达式可以去除匿名内部类中的冗长的类定义,特别是当这个类只实现了一个方法时。
注意:
- 对于多个方法的接口(即有多个抽象方法的接口),不能使用 lambda 表达式。
- Lambda 表达式不能用于创建匿名内部类的其他场景,比如实现包含多个方法的接口,或是需要维护多个状态的复杂对象。
4.首先这是一个匿名内部类,
看不懂匿名内部类的小伙伴,建议你点这个链接3分钟搞定匿名内部类
button.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked!"); }
});浅色部分表示可以删除简化的部分,当然后面我会总结简化规则
下面是用lambda表达式简化的形式:
button.addActionListener(e -> System.out.println("Button clicked!"));
没错,lamda表达式就是用来简化匿名内部类的!它只关注方法体!
它是怎么简化的,我们一步步分析:
第一步:去掉浅色部分,只剩下形参和方法体(这一步在删除的过程中其实idea会给提示)
button.addActionListener(
(ActionEvent e)
System.out.println("Button clicked!");
);
第二步:在形参和方法体之间加一个→
button.addActionListener((ActionEvent e)→System.out.println("Button clicked!") );
第三步:形参类型名以及参括数号就得到了lambda表达式
button.addActionListener(e -> System.out.println("Button clicked!"));
5.lambda表达式的省略规则:
参数类型可省;
只有一个参数,参数类型可省,()也可同时省略;
如果lambda表达式的方法体只有一行,大括号“{}”、分号“;”、“return”可以省略不写,但必须同时省略(这是重点)
好了,今天的学习就到这了,如果对你有帮助,那就再好不过啦,学习应该是从最简单的开始,用已知的探索未知的,因为他们有联系,不懂匿名内部类的小伙伴,先要学习匿名内部类呦!3分钟的进步胜过24小时的原地踏步,加油!