java8新特性-Lamda表达式

来源:互联网 发布:用dw制作淘宝店铺首页 编辑:程序博客网 时间:2024/06/02 04:50

       Lamda表达式属于函数式编程的概念,为甚需要函数式编程呢?如果想知道函数式编程产生的目的,那么我们可以且必须通过匿名内部类来分析。

   

public class TestClass {      /**      * 接口类      */      public interface IMessage{          void print();      }            public static void main(String[] args) {          fun(new IMessage(){              @Override              public void print() {                 System.out.println("Hello World !"); //整个fun方法的核心就是一个输出语句              }          });      }            public static void fun(IMessage msg){          msg.print();      }    }
  实际代码之中,如果是fun()方法,最终需要的只是一个输出而已,但是由于java开发结构的完整性要求,所以不得不在这个核心的语句上嵌套更多的内容。

  以上的做法要求的实在是过于严谨,所以在jdk1.8时代引入了函数式编程可以简化简化以上的代码。

   使用lamda表达式简化程序如下:

    

public class TestClass {      /**      * 接口类      */      public interface IMessage{          void print();      }            public static void main(String[] args) {          fun(()-> System.out.println("Hello World !"));//lamda表达式,输出Hello World   }            public static void fun(IMessage msg){          msg.print();      }    }

整个操作中匿名内部类只是进行了一句话的输出,所以可以使用Lamda表达式来简化程序代码。
lamda表达式实际上就是在匿名内部类的基础上,解决匿名匿名内部类所造成的过多繁杂无用的语法而出现,

对于Lamda的语法有三种形式:

   1. (参数)->单行语句;

  2.   (参数)-> {单行语句;}

  3.    (参数)->表达式;

例子:观察有参数的单行语句

public class TestClass {      /**      * 接口类      */      public interface IMessage{          void print(String str);      }            public static void main(String[] args) {          //首先要定义此处Lamda表达式要接收的变量,单行语句直接进行输出          fun((s)-> System.out.println(s));    }            public static void fun(IMessage msg){          msg.print("Hello World !");//设置参数内容      }    }
例子:多行语句的定义

public class TestClass {      /**      * 接口类      */      public interface IMessage{          void print(String str);      }            public static void main(String[] args) {          //首先要定义此处Lamda表达式要接收的变量,单行语句直接进行输出          fun((s)-> {           s..toUpperCase();           System.out.println(s));              }       }            public static void fun(IMessage msg){          msg.print("Hello World !");//设置参数内容      }    }
如果代码中只是一个简单的计算表达式,那么操作也很容易。

例子:编写一个表达式

public class TestClass {      /**      * 接口类      */      public interface IMessage{          int add(int x,int y);      }            public static void main(String[] args) {          //首先要定义此处Lamda表达式要接收的变量,单行语句直接进行输出          fun((s1,s2)-> s1+s2);                }            public static void fun(IMessage msg){          System.out.println(msg.add(10, 20));//设置参数内容      }    }
如果计算表达式中需要使用return,可以使用如下定义:

public class TestClass {      /**      * 接口类      */      public interface IMessage{          int add(int x,int y);      }            public static void main(String[] args) {          //首先要定义此处Lamda表达式要接收的变量,单行语句直接进行输出          fun((s1,s2)-> {return s1+s2 ;});                }            public static void fun(IMessage msg){          System.out.println(msg.add(10, 20));//设置参数内容      }    }
如果只是一个表达式,返回值的时候,还是不用return语句比合适,多行语句可以是用return语句返回值。

总结:

  利用Lamda表达式最终解决的问题,避免的匿名内部类定义过多无用的操作。







原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸肿里面有硬块怎么办 内分泌失调引起的肥胖怎么办 宝宝接种证丢了怎么办 不给补办接种证怎么办 儿童接种证丢了怎么办 疫苗接种本丢了怎么办 脊灰滴剂滴多了怎么办 鞋小了挤脚趾头怎么办 大母脚趾头疼是怎么办 小脚趾内侧长茧怎么办 小脚趾肿了很痛怎么办 穿袜子大脚趾痛怎么办 脚指头长水泡很痒怎么办 走路脚打起泡了怎么办 剪完脚趾甲肿了怎么办 大脚趾关节处疼怎么办 战士10穿不进去怎么办 脚上皮肤干燥起皮怎么办 脚趾头冻了很痒怎么办 大脚趾里面有脓怎么办 大脚趾肉肿了怎么办 大脚趾边上肿了怎么办 大母脚趾关节疼怎么办 大脚趾有点歪了怎么办 大脚趾扭伤肿了怎么办 大脚趾外翻怎么办 知乎 颈椎带着胳膊疼怎么办 胳膊酸困无力是怎么办 腰疼引起的腿麻怎么办 手臂到手指麻痛怎么办 拔完智齿特别疼怎么办 躺着胃烧的难受怎么办 喝酒胃烧的难受怎么办 舌头破了特别疼怎么办 舌头又厚又大怎么办 牙齿咬到舌头了怎么办 舌头起了好多泡怎么办 舌头尖起泡很痛怎么办 舌头上起泡怎么办很疼 月经来了二十多天还不干净怎么办 三岁宝宝缺锌怎么办