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