0,首先有个新名词,函数式接口:有且仅有一个抽象方法的接口。为何要特别定义这么一个玩意儿,老老实实都叫接口很差吗?java
开发jdk这帮大佬们发现java相比那些新兴语言写法过于臃肿,想简化写法不至于落后。然而所有简化却实现不了,只能简化 “有且仅有一个抽象方法的接口”这样的类,因而定义个新名词,给这种接口提供简便写法。ide
1.lambda表示是否是什么地方都能用的。它只用在函数式接口。函数
2 ,举个栗子 有这么一个接口对象
public interface LumbdaTestinterface { String test(String name); }
我想要个实现对象怎么办?第一个方法另写一个类实现接口,重写test方法,接口
第二个方法,直接在使用的时候建立匿名实现类好比这样开发
LumbdaTestinterface lumbdaTestinterface= new LumbdaTestinterface() { @Override public String test(String name) { return "苗条的"+name; } };
lambda表示式就是简化上面的匿名方式 实现以下test
LumbdaTestinterface testLambdaService = (name) -> { return "苗条的"+name; };
前面的括号直接写参数,多参数用逗号分隔(类型可省),箭头后括号直接写方法。 只有一个参数,时能够不写括号。箭头后不换行的话大括号可省,return也能省。jdk
3。这个实现连个方法名都没有,为何能实现test方法呢?这就是1中提到的,这种写法要求类只能有一个抽象方法,因此这种写法就默认是要实现的方法。lambda