java1.8新特性之Lamda表达式

原创 2017年05月11日 15:10:45

Lamda属于函数式编程的概念,那么为什么需要函数式的编程呢?

如何要想清楚函数式编程的产生目的,那么我们必须通过匿名内部类来分析。

传统的内名内部类:

package com.wonglar.demo;

interface IMessage{
    public void print();
}

public class Demo {
    public static void main(String[] args) {
        fun(new IMessage() {
            @Override
            public void print() {
                System.out.println("Hello World !");
            }
        });
    }

    public static void fun(IMessage msg){
        msg.print();
    }
}

实际上整个代码当中,我们最终需要的就是一个输出而已,由于java开发的结构性的完整要求,所以不得不在这个核心的语句上嵌套更多的内容。

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

使用Lamda表达式:

package com.wonglar.demo;

interface IMessage{
    public void print();
}

public class Demo {
    public static void main(String[] args) {
        fun(()->System.out.println("Hello World !"));
    }

    public static void fun(IMessage msg){
        msg.print();
    }
}

整个的操作里面匿名内部类只是进行了一行语句的输出,所以使用了Lamda表达式可以非常轻松的实现要求。

对于Lamda语法有三种形式:

  1. (参数)->单行语句;
  2. (参数)->{单行语句};
  3. (参数)->表达式。

有参的单行语句:

package com.wonglar.demo;

interface IMessage{
    public void print(String str);
}

public class Demo {
    public static void main(String[] args) {
        //首先要定义此表达式需要接受的变量,单行语句直接进行输出。
        fun((s)->System.out.println(s));
    }

    public static void fun(IMessage msg){
        msg.print("Hello World !");
    }
}

多行语句:

package com.wonglar.demo;

interface IMessage{
    public void print(String str);
}

public class Demo {
    public static void main(String[] args) {
        //首先要定义此表达式需要接受的变量,单行语句直接进行输出。
        fun((s)->{
            s = s.toUpperCase();
            System.out.println(s);
        });
    }

    public static void fun(IMessage msg){
        msg.print("Hello World !");
    }
}

如果说现在代码里面只是一个简单的计算表达式,那么操作也可以很容易。

编写一个表达式:

package com.wonglar.demo;

interface IMessage{
    public int add(int x,int y);
}

public class Demo {
    public static void main(String[] args) {
        //首先要定义此表达式需要接受的变量,单行语句直接进行输出。
        fun((num1,num2)->num1+num2);
    }

    public static void fun(IMessage msg){
        System.out.println(msg.add(10,5));
    }
}

总结:

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Java8】JDK8.0新特性—Lamda表达式

转自:http://blog.sina.com.cn/s/blog_4a157f470102v903.html

Java8新特性(二)------lamda表达式

Ø  基础讲解   Lambda表达式是一种基于函数的编程语言,下面我们来演示一下java8中lambda表达式的运用,根据例子来分析一下java8中lambda表达式的改进。   新建一个项目,...

java8新特性-Lamda表达式

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

java8新特性-Lamda表达式

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

Java1.8新特性关于lambda表达式与Stream流的使用以及对集合的实用操作

Java8从发布到现在已经很久了,慢慢的也开始了被广泛使用,不得不说java8的一大亮点是lambda表达式以及Stream,它将函数式编程的思想很好的融入到了java当中,使得我们的java更加的强...

Java JDK1.8新特性Lambda 表达式

一、lambda含义     lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。在很多动态语言和C#中都有相应的lambda语法,这类语法...

Java 1.8 新特性之(Lambda表达式)

针对官网对Lambda的解释做个翻译。

java8新特性 函数式编程 Lamda

简介 函数式编程核心:以处理数据的方式处理代码。 相比较命令式编程的优点: 1. 代码更加简洁优雅,效率更高  2. 避免了对变量的显式修改和赋值  3. 函数式风格的代码可...

jdk1.8 新特性之 lambda表达式

我们首先看一个java实现多线程的lambda表达式的例子常规Runnable runnable = new Runnable(){ @Override ...
  • dounine
  • dounine
  • 2017年04月23日 21:30
  • 7015

Android 使用jdk1.8新特性之lambda表达式

目前Java 8的新特性Lambda 结合 RxJava 在一起使用可以简化大量的代码,下面简单介绍在AndroidStudio中配置Gradle使得支持Java 8。Android 使用Java8 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java1.8新特性之Lamda表达式
举报原因:
原因补充:

(最多只允许输入30个字)