多语言展示
当前在线:934今日阅读:176今日分享:34

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

java8新特性-使用lambda表达式
工具/原料
1

java8

2

intellij idea

方法/步骤
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();    }}

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));    }}

3

查看程序的运行结果:

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));    }}

5

我们一直在强调,如果要实现lambda表达式,那么必须有一个前提,这个前提就是接口里面的抽象方法只能够存在一个。所以为了严格这样的语法要求。可以使用函数式的接口定义。package com.gwolf;@FunctionalInterfaceinterface 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));    }}

6

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

推荐信息