lambda表达式:
//推导lambda表达式
public class TestLambda {
//静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda2!");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda3!");
}
}
like = new Like3();
like.lambda();
//5.匿名内部类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I Like Lambda4!");
}
};
like.lambda();
//6.用lambda实现
like = () -> {
System.out.println("I Like Lambda5!");
};
like.lambda();
}
}
//定义一个函数式接口
interface ILike{
void lambda();
}
//实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda!");
}
}
//运行结果:I Like Lambda!
// I Like Lambda2!
// I Like Lambda3!
// I Like Lambda4!
// I Like Lambda5!
lambda的简化:
public class TestLambda2 {
public static void main(String[] args) {
//ILove love = new ILove();
//love.na("小明");
Love l1 = (String name) ->{
System.out.println(name);
};
l1.na("红红");
Love l2 = (name) ->{
System.out.println(name);
};
l2.na("绿绿");
Love l3 = (name) ->{
System.out.println(name);
};
l3.na("蓝蓝");
}
}
interface Love{
void na(String name);
}
class ILove implements Love{
@Override
public void na(String name) {
System.out.println("下个就是你-->" + name);
}
}
总结:
1. lambda表达式只有一行代码的时候才可以省掉花括号。
2. 使用lambda表达式的前提是必须为函数接口。
3. 当有参数时,可以去掉参数类型和小括号;当有多个参数可以同时去掉所有参数的类型,但是不能去掉小括号。