javalambda重写⽅法_Java8lambda表达式2种常⽤⽅法代码解
与python不⼀样,python lambda是定义匿名函数,⽽在java8中lambda是匿名内部类
例1、⽤lambda表达式实现Runnable
我开始使⽤Java 8时,⾸先做的就是使⽤lambda表达式替换匿名类,⽽实现Runnable接⼝是匿名类的最
好⽰例。看⼀下Java 8之前的runnable实现⽅法,需要4⾏代码,⽽使⽤lambda表达式只需要⼀⾏代码。我们在这⾥做了什么呢?那就是⽤() -> {}代码块替代了整个匿名类。
// Java 8之前:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Before Java8, too much code for too little to do");
}
}).start();
//Java 8⽅式:
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();
输出:
too much code, for too little to do
Lambda expression rocks !!
这个例⼦向我们展⽰了Java 8 lambda表达式的语法。你可以使⽤lambda写出如下代码:
(params) -> expression
(params) -> statement
(params) -> { statements }
例如,如果你的⽅法不对参数进⾏修改、重写,只是在控制台打印点东西的话,那么可以这样写:
() -> System.out.println("Hello Lambda Expressions");
如果你的⽅法接收两个参数,那么可以写成如下这样:
(int even, int odd) -> even + odd
顺便提⼀句,通常都会把lambda表达式内部变量的名字起得短⼀些。这样能使代码更简短,放在同⼀⾏。所以,在上述代码中,变量名选⽤a、b或者x、y会⽐even、odd要好。
例2、使⽤Java 8 lambda表达式进⾏事件处理
如果你⽤过Swing API编程,你就会记得怎样写事件监听代码。这⼜是⼀个旧版本简单匿名类的经典⽤例,但现在可以不这样了。你可以⽤lambda表达式写出更好的事件监听代码,如下所⽰:
lambda编程// Java 8之前:
JButton show = new JButton("Show");
show.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Event handling without lambda expression is boring");
}
});
// Java 8⽅式:
show.addActionListener((e) -> {
System.out.println("Light, Camera, Action !! Lambda expressions Rocks");
});
Java开发者经常使⽤匿名类的另⼀个地⽅是为 Collections.sort() 定制 Comparator。在Java 8中,你可以⽤更可读的lambda表达式换掉丑陋的匿名类。我把这个留做练习,应该不难,可以按照我在使⽤lambda表达式实现 Runnable 和 ActionListener 的过程中的套路来做。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持云海天教程。