科技建站网站源码/百度提交入口的网址
Lambda表达式
- 任何一个接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
- 对于函数式接口,我们可以通过Lambda表达式来创建该接口对象。
为了更好的理解Lambda表达式的出现缘由,我们回顾以前是怎么创建接口对象的
//先定义一个接口
interface RoleName{void outPutName();
}
1.外部类创建接口对象
//定义一个实现类(不在其他类体里面)
class Teacher implements RoleName{@Overridepublic void outPutName() {System.out.println("我是小红老师");}
}public class Test {public static void main(String[] args) {RoleName teacher = new Teacher();teacher.outPutName();}
}
2.静态内部类创建接口对象
public class Test {static class Teacher implements RoleName{@Overridepublic void outPutName() {System.out.println("我是小红老师");}}public static void main(String[] args) {RoleName teacher = new Teacher();teacher.outPutName();}
}
3.局部内部类创建接口对象
public class TestLambda {public static void main(String[] args) {class Teacher implements RoleName {@Overridepublic void outPutName() {System.out.println("我是小红老师");}}RoleName teacher = new Teacher();teacher.outPutName();}
}
4.匿名内部类创建接口对象
public class TestLambda {public static void main(String[] args) {RoleName teacher;teacher = new RoleName() {@Overridepublic void outPutName() {System.out.println("我是小亮老师");}};//匿名内部类顾名思义类没有名字,结束记得加;teacher.outPutName();}
}
5.Lambda表达式创建接口对象
//接口方法无参
public class TestLambda {public static void main(String[] args) {RoleName teacher;teacher = ()->{System.out.println("我是小白老师");};teacher.outPutName();}
}
//接口方法有参
public class TestLambda {public static void main(String[] args) {RoleName teacher;//Lambda表达式的参数类型可以省略,表达式最后加;teacher = (String name)->{System.out.println("我是"+name+"老师");};teacher.outPutName("小白");}
}interface RoleName{void outPutName(String name);
}
Lambda表达式优点
-
避免匿名内部类定义过多
-
让代码看起来很简洁
-
只留下核心的逻辑代码