参考 B站 狂神说
例:
接口 Aa 、 接口变量 aaaa
外部类 Ss 、方法 aaa()
public class Lambda {
/*
//2、静态内部类
static class Ss implements Aa{
@Override
public void aaa() {
System.out.println("你好啊");
}
}*/
public static void main(String[] args) {
/*
//3、局部内部类
class Ss implements Aa{
@Override
public void aaa() {
System.out.println("你好啊");
}
}*/
/*
//4、匿名内部类
Aa a = new Aa() {
@Override
public void aaa() {
System.out.println("你好啊");
}
};*/
/*
//5、lambda表达式
Aa aaaa = (int a) -> {
// TODO 自动生成的方法存根
System.out.println("你好阿"+a);
};*/
/*
// 6、简化lambda表达式 -> 去掉参数类型
Aa aaaa = (a) -> {
System.out.println("你好阿" + a);
};*/
/*
// 7、简化lambda表达式 -> 去掉参数类型 -> 去掉括号
Aa aaaa = a -> {
System.out.println("你好阿" + a);
};*/
// 8、简化lambda表达式 -> 去掉参数类型 -> 去掉括号 -> 去掉花括号
Aa aaaa = a ->
System.out.println("你好阿" + a);
//调用方法aaa()
aaaa.aaa(3);
//总结:
/*
* lambda表达式只有一行代码的情况下才能简化成一行,如果多行,那就用代码块{...}包裹;
* 前提是函数是借口(一个接口只有一个方法); -> 接口Aa只有一个方法aaa(int a)
* 多个参数也可以去掉参数类型,参数类型要去掉就都去掉必须加上括号;(a,b) -> System.out.println("你好阿" + a+b);
* */
}
}
//接口 Aa
interface Aa{
void aaa(int a);
}
/*
* //1、外部类 Ss
class Ss implements Aa{
@Override
public void aaa() {
System.out.println("你好啊");
}
}
*/