Lamda表达式
λ希腊字母表中排序第十一位的字母,英语名为Lambda
避免匿名内部类定义过的多
其实质属于函数式编程的概念
理解函数式接口是学习Java8 Lambda表达式的关键所在
函数式接口定义:
1.任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
2.对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。
//推导Lambda表达式 public class TestLambda1 { //3.静态内部类 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(); //4.局部内部类 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(); } } //1.定义函数式接口 interface ILike{ void Lambda(); } //2.实现类 class Like implements ILike{ @Override public void Lambda() { System.out.println("I like lambda!"); } }
1.上面推导输出结果 2.下面简化输出结果
public class TestLambda2 {
public static void main(String[] args) {
ILove love = null;
//1.原始
love = (String person)->{
System.out.println(person + "I love you!");
};
love.love("呜呜");
//2.简化去参数类型
love = (person)->{
System.out.println(person + "I love you!");
};
love.love("公子");
//3.简化去括号
love = person->{
System.out.println(person + "I love you!");
};
love.love("大侠");
//4.简化去花括号(此简化前提是方法体内只有一行代码,否则不能简化)
love = person->System.out.println(person + "I love you!");
love.love("随哥");
}
}
interface ILove{
void love(String person);
}
如果括号内有多个参数,也可以去掉参数类型,但是必须加上括号,不能像只有一个参数一样可以去掉括号
标签:love,like,System,println,Java,多线程,out,Lambda From: https://www.cnblogs.com/zhulei118/p/16772503.html