可以称作闭包,是java8的重要特性 lambda允许把函数当做一个方法的参数,使代码简洁紧凑
前提:必须是函数式接口才能使用lambda表达式 函数式接口:任何接口,只包含一个抽象方法
public class TestLambda{
public static void main(String[] args){
ILike like=new Like();
like.lambda();
}
}
interface ILike{
void lambda();
}
class Like implements ILike{
@override
public void lambda(){System.out.println("我喜欢lambda")}
}
静态内部类:顾名思义
public class TestLambda{
static class Like implements ILike{
@override
public void lambda(){System.out.println("我喜欢lambda")}
}
public static void main(String[] args){
ILike like=new Like();
like.lambda();
}
}
interface ILike{
void lambda();
}
局部内部类:放在方法里的类
public class TestLambda{
public static void main(String[] args){
ILike like=new Like();
like.lambda();
class Like implements ILike{
@override
public void lambda(){System.out.println("我喜欢lambda")}
}
}
}
interface ILike{
void lambda();
}
匿名内部类:没有类名,必须借助接口或父类
public class TestLambda{
public static void main(String[] args){
like=new ILike(){
@override
public void lambda(){System.out.println("我喜欢lambda")}
}
like.lambda();
}
}
interface ILike{
void lambda();
}
lambda:不要接口名,也不要方法名,只写方法体
public class TestLambda{
public static void main(String[] args){
like=()→{System.out.println("我喜欢lambda")};
like.lambda();
}
}
interface ILike{
void lambda();
}
带参数的lambda:a就是参数,参数类型可以去掉,一去掉就都去掉,多参数必须加括号 简化成3的前提:方法体只有一行
|