接触Lambda表达式的时候,第一感觉就是,这个是啥?我居然看不懂,于是开始寻找资料,必须弄懂它。
先来看一个案例:
@FunctionalInterface
public interface MyLamda {
void test1(String y);
}
import demo.knowledgepoints.Lambda.inf.MyLamda;
public class LambdaTest {
public static void main(String[] args) {
MyLamda m = (y) ->{ System.out.println("ss"+y);};
m.test1("s");
}
}
运行结果:

非Lambda方式:
import demo.knowledgepoints.Lambda.inf.MyLamda;
public class MyLamdaIml implements MyLamda {
@Override
public void test1(String y) {
System.out.println("ss"+y);
}
public static void main(String[] args) {
MyLamdaIml myLamdaIml = new MyLamdaIml();
myLamdaIml.test1("s");
}
}
运行结果:

对比一下这两种方式:明显感觉使用Lambda表达式的更加简洁,由Java8引入,让我们一起来看看Lambda表达式的优点和不足。
1. Lambda表达式 语法:() -> {}; 通过上述案例我们看出,这个语法,就是替代了一个实现类和实现类中方法。
() 里面y为入参,{} 为方法体,类名被隐藏,方法名被隐藏。
2. Lambda表达式,接口(MyLamda)只能有且只有一个抽象方法。同时通过注解@FunctionalInterface可以做到编译的时候校验抽象方法,
不满足要求,给出编译报错。
3. (y) 可以写成 (String y), {}里面可以省略 return。并且当方法中只有一行代码时,{} 也可以省略 ;() 里面只有一个参数() 也可以省略,
最简写法 y -> System.out.println("ss"+y);
知道Lambda表达式的概念,就要结合实际情况来使用。
案例:Java的Runable接口 有注解@FunctionalInterface。
@FunctionalInterface
public interface Runnable {
/**
* When an object implementing interface <code>Runnable</code> is used
* to create a thread, starting the thread causes the object's
* <code>run</code> method to be called in that separately executing
* thread.
* <p>
* The general con

本文介绍了Java Lambda表达式的基本语法和使用,包括其简洁的语法形式,接口的@FunctionalInterface注解,以及在实际应用中的示例,如简化代码、集合操作。同时提到了Lambda表达式的优缺点,如简化代码但不适合复杂操作,并指出在数据量小时性能可能较差。
最低0.47元/天 解锁文章
915

被折叠的 条评论
为什么被折叠?



