Lambda表达式
new Thread ( ()->System.out.println("多线程学习。。。")) .start();
函数式接口:接口(interface)中只有一个方法要实现!
//接口
interface ILike{
void lambda();
}
1、定义实现类实现方法
//接口
interface ILike{
void lambda();
}
//实现类
class Like implements ILike{
//重写实现接口方法
@Override
public void lambda(){
system.out.println("i like lambda");
}
}
创建实现类对象实现接口方法
//主方法测试
public static void main(String[] args) {
ILike like = new Like();//new一个实现类来实现接口
like.lambda();//调用方法
}
这是最原始的方法
2、静态内部类(初步简化代码)
-
将实现类写为静态内部类;
public class TestLambda{
//变为静态内部类
static class Like implements ILike{
@Override
public void lambda(){
system.out.println("i like lambda");
}
}
//main
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
}
}
3、局部内部类(进一步简化)
//main方法
public static void main(String[] args) {
//局部内部类
class Like implements ILike{
@Override
public void lambda(){
system.out.println("i like lambda");
}
}
ILike like = new Like()
like.lambda();
}
4、匿名内部类(省略名字)
//main
public static void main(String[] args) {
ILike like = new ILike(){//直接重写接口方法
@Override
public void lambda(){
system.out.println("i like lambda");
}
};//注意这里的分号,此时他是一个语句而非一个类!
like.lambda();//调用方法
}
5、Lambda表达式(更加简化)
//main
public static void main(String[] args) {
ILike like = ()->{//方法体代码块
system.out.println("i like lambda");
}
like.lambda();//调用方法
}
总结
Lambda表达式还能够更加简化
(int a)->{system.out.println("i like lambda");}
-
1、去掉参数类型;
(a)->{system.out.println("i like lambda");}
-
2、去掉括号;
a->{system.out.println("i like lambda");}
-
3、去掉花括号;
a->system.out.println("i like lambda");
注意:1、只有一个方法的时候才能够简化去掉花括号,如果有多行就要用代码块包裹;
2、必须是函数式接口;
3、多个参数也可以去掉参数类型,此时必须加括号(要去掉就都去掉);