Java基础14-从外部类到lambda
记载从外部类到静态内部类、局部内部类、匿名内部类最后到lambda的简化过程。
函数式接口:函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。(非抽象方法需要default关键字)
// 1. 定义函数式接口
interface SayLambda{
void sayLambda();
}
// 2.外部类
class Say1 implements SayLambda{
@Override
public void sayLambda() {
System.out.println("外部类!");
}
}
public class TestLambda {
static class Say2 implements SayLambda{
@Override
public void sayLambda() {
System.out.println("静态内部类!");
}
}
public static void main(String[] args) {
Say1 say1 = new Say1();
say1.sayLambda();
Say2 say2 = new Say2();
say2.sayLambda();
class Say3 implements SayLambda{
@Override
public void sayLambda() {
System.out.println("局部内部类!");
}
}
Say3 say3 = new Say3();
say3.sayLambda();
SayLambda say4 = new SayLambda() {
@Override
public void sayLambda() {
System.out.println("匿名内部类!");
}
};
say4.sayLambda();
SayLambda say5 = ()->{
System.out.println("lambda!");
};
say5.sayLambda();
}
}
对lambda的简化
interface SaySomethingElse{
void saySomething(int a);
}
public class TestLambda {
static class Say2 implements SayLambda{
@Override
public void sayLambda() {
System.out.println("静态内部类!");
}
}
public static void main(String[] args) {
//对lambda的简化
// 简化前
SaySomethingElse saySomethingElse = (int a)->{
System.out.println("Something else "+ a);
};
saySomethingElse.saySomething(10);
// 去掉参数类型,去掉括号,去掉花括号
saySomethingElse = a -> System.out.println("Something else "+ a);
saySomethingElse.saySomething(10);
}
}