Lambda表达式是Java SE 8才引进的新特性。对于只申明一个函数的接口,它提供了一个简单和简洁的方式让程序员编写匿名函数
,同时改善了Java集合框架库(collection),使得更加容易迭代、过滤一个集合,更加容易从另一个集合中提取数据。并且在多核计算机的情况下,新特性提高了运算性能。
主要使用场景为代替匿名内部类的使用:
例子如下:
环境jdk1.8
写了一个jframe的例子:
package com.xc.test2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class LambdaTest extends JFrame {
private static final long serialVersionUID = -2394463841571740203L;
private JButton jb;
public LambdaTest() {
this.setBounds(200, 300, 400, 200);
this.setTitle("lambdaTest");
jb = new JButton("click");
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("clicked");
}
});
this.add(jb);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new LambdaTest();
}
}
其中监听使用了匿名内部类。改成lambda表达式之后的代码如下:
package com.xc.test2;
import javax.swing.JButton;
import javax.swing.JFrame;
public class LambdaTest extends JFrame {
private static final long serialVersionUID = -2394463841571740203L;
private JButton jb;
public LambdaTest() {
this.setBounds(200, 300, 400, 200);
this.setTitle("lambdaTest");
jb = new JButton("click");
jb.addActionListener(event -> System.out.println("hahaha"));
this.add(jb);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new LambdaTest();
}
}
实现了从
到
的代码简化。