java8新特性-使用lambda表达式和语法

2025-10-29 11:48:33

1、lambda表达式的基本语法形式:()->方法体。

而在整个java之中,对于lambda表达式一共定义了有三类语法:

(params) -> 单行语句;

(params) ->表达式;

(params) ->{多行语句};

package com.gwolf;

interface Message {

    public void print();

}

public class TestDemo {

    public static void main(String[] args) {

        Message msg = () -> System.out.println("Hello World");

        msg.print();

    }

}

java8新特性-使用lambda表达式和语法

2、下面定义一个可以用于加法计算的数学接口,里面可以接收两个数据,而后进行加法计算。如果在编写lambda表达式的过程之中,如果只有一样语句,需要返回值,那么不需要有return。

package com.gwolf;

interface MyMath {

    public int add(int x,int y);

}

public class TestDemo {

    public static void main(String[] args) {

        MyMath myMath = (x,y) -> x + y;

        

        System.out.println("计算结果:" + myMath.add(10,20));

    }

}

java8新特性-使用lambda表达式和语法

3、查看程序的运行结果:

java8新特性-使用lambda表达式和语法

4、如果说现在要在程序里面编写多行代码,那么就需要使用“{}”定义:当返回值有多行语句的时候return不能省略:

package com.gwolf;

interface MyMath {

    public int add(int x,int y);

}

public class TestDemo {

    public static void main(String[] args) {

        MyMath myMath = (x,y) ->

        {

         int sum =    x + y;

         return sum;

        };

        

        System.out.println("计算结果:" + myMath.add(10,20));

    }

}

java8新特性-使用lambda表达式和语法

5、我们一直在强调,如果要实现lambda表达式,那么必须有一个前提,这个前提就是接口里面的抽象方法只能够存在一个。所以为了严格这样的语法要求。可以使用函数式的接口定义。

package com.gwolf;

@FunctionalInterface

interface MyMath {

    public int add(int x,int y);

}

public class TestDemo {

    public static void main(String[] args) {

        MyMath myMath = (x,y) ->

        {

         int sum =    x + y;

         return sum;

        };

        

        System.out.println("计算结果:" + myMath.add(10,20));

    }

}

java8新特性-使用lambda表达式和语法

6、如果此时在接口里面定义了更多的方法的时候,那么就会直接在接口上出现错误的提示。但是从jdk1.8开始,接口的定义形式又发生了改变。在jdk1.8之前,所有的接口定义的方法其权限都属于public,可是这个严格的权限要求被“半打破”。接口可以进行动态的扩充了。一个实现好的接口,现在又突然要增加新的方法,但是这个增加的方法不希望影响到子类。这种情况下就可以使用default方法。

package com.gwolf;

@FunctionalInterface

interface Message {

    public String getInfo();

    default  void print() {//此方法不要求子类实现

        System.out.println("www.baidu.com");

    }

}

public class TestDemo {

    public static void main(String[] args) {

        Message msg = () -> "Hello World!";

        System.out.println("计算结果:" + msg.getInfo());

        msg.print();

    }

}

java8新特性-使用lambda表达式和语法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢