如何让你的代码写起来更加优雅?Lamda表达式助你起飞

前言lamda表达式只支持函数式接口 。

  • Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 JAVA 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构 。
  • 为啥要突然插播一个lamda表达式的学习,因为这玩意很有逼格呀~代码写起来更有大佬的感觉 。
一、函数式接口什么是函数式接口?
任何一个接口,有且只有 一个抽象方法,那么它就是函数式接口 。
典型的函数式接口
public interface mainInterface {void funMethod();}对于函数式接口,我们可以用lamda表达式来创建他的实现对象 。
二、接口的五种实现方式①正常类实现
代码案例:
/** * 1.正常接口实现类 */class FunInterImpl implements FunInter{//重写该方法@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}②静态内部类实现
//2、静态内部类实现static class FunInterImpl implements FunInter{@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}③局部内部类实现
//3.局部内部类class FunInterImpl2 implements FunInter{@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}④匿名内部类实现
//4.匿名内部类,要一分号;结尾FunInter funInter2 = new FunInter() {@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}};⑤lamda表达式实现
【如何让你的代码写起来更加优雅?Lamda表达式助你起飞】//5.lamda表达式实现FunInter funInter3 = (String name) ->{System.out.println("我是实现类中的重写方法:"+name);};整体代码:
public class NoReturnMultiParam {public static void main(String[] args) {//1.正常实现接口的方式FunInterImpl funInter = new FunInterImpl();funInter.method("1、实现类");System.out.println("***************************************");//2、静态内部类实现FunInterImpl funInter1 = new FunInterImpl();funInter.method("2、静态内部类");System.out.println("***************************************");//3.局部内部类class FunInterImpl2 implements FunInter{@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}FunInterImpl2 funInterImpl2 = new FunInterImpl2();funInterImpl2.method("3、局部内部类");System.out.println("***************************************");//4.匿名内部类,要一分号;结尾FunInter funInter2 = new FunInter() {@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}};funInter2.method("4、匿名内部类");System.out.println("***************************************");//5.lamda表达式实现FunInter funInter3 = (String name) ->{System.out.println("我是实现类中的重写方法:"+name);};funInter3.method("5.lamda表达式实现");}//2、静态内部类实现static class FunInterImpl implements FunInter{@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}}/** * 这个注解是用来标注函数式接口的 * 1.必须注解在接口上 * 2.被注解的接口有且只有一个抽象方法 * 3.被注解的接口可以有默认方法/静态方法,或者重写Object的方法 */@FunctionalInterfaceinterface FunInter{void method(String name);}/** * 1.正常接口实现类 */class FunInterImpl implements FunInter{//重写该方法@Overridepublic void method(String name) {System.out.println("我是实现类中的重写方法:"+name);}}执行结果如下:
如何让你的代码写起来更加优雅?Lamda表达式助你起飞

文章插图
 
三、lamda表达式实现方式:
public class lamdaTest01 {public static void main(String[] args) {/*** 多参数无返回*/NoReturnMultiParam1 n1 = (int a,int b) ->{System.out.println("多参数无返回:"+a+b);};n1.method(1,2);/*** 无参无返回值*/NoReturnNoParam n2 = ()->{System.out.println("无参无返回值");} ;n2.method();/*** 一个参数无返回*/NoReturnOneParam n3 = (int a) -> {System.out.println("一个参数无返回" + a);};n3.method(11);/*** 多个参数有返回值*/ReturnMultiParam n4 = (int a,int b)->{System.out.println("多个参数有返回值" + a);return 1;};System.out.print("****"+n4.method(1, 3));/*** 无参有返回*/ReturnNoParam n5 = ()->{System.out.println("无参有返回");return 1;};System.out.print("***"+n5.method());/*** 一个参数有返回值*/ReturnOneParam n6 = (int a) ->{System.out.println("一个参数有返回值"+a);return a;};System.out.print("***"+n6.method(1));}}/**多参数无返回*/@FunctionalInterfaceinterface NoReturnMultiParam1 {void method(int a, int b);}/**无参无返回值*/@FunctionalInterfaceinterface NoReturnNoParam {void method();}/**一个参数无返回*/@FunctionalInterfaceinterface NoReturnOneParam {void method(int a);}/**多个参数有返回值*/@FunctionalInterfaceinterface ReturnMultiParam {int method(int a, int b);}/*** 无参有返回*/@FunctionalInterfaceinterface ReturnNoParam {int method();}/**一个参数有返回值*/@FunctionalInterfaceinterface ReturnOneParam {int method(int a);}


推荐阅读