Java教程

java lambda表达式

本文主要是介绍java lambda表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java Lambda表达式

λ是希腊字母中排序第十一位的字母,lambda表达式可以避免匿名内部类定义过多 ,只留下核心的逻辑,使代码看上去更简洁,其实质属于函数式编程

函数式接口:只包含唯一一个抽象方法的接口

例如:

interface Runnable{
    void runnable();
}

对于函数式接口,可以通过lambda表达式来创建该接口的对象

推导lambda表达式:

package com.yuanyu.thread;

//推导lambda表达式
public class Demo02 {
    public static void main(String[] args) {
        class Like implements ILike{

            @Override
            public void like() {
                System.out.println("I like you verymuch3");
            }
        }

        ILike iLike =new Like();
        ILike iLike2 =null;
        iLike.like();

        //匿名内部类(右边的类改成接口,重写方法)
        ILike iLike1 =new ILike() {
            @Override
            public void like() {
                System.out.println("I like you verymuch4");
            }
        };
        iLike1.like();

        //lambda简化
        iLike2=() ->{
            System.out.println("I like you verymuch5");
        };
        iLike2.like();
    }

    //静态内部类
    static class Like implements ILike{

        @Override
        public void like() {
            System.out.println("I like you verymuch2");
        }
    }
}

//定义一个函数式接口
interface ILike{
    void like();
}

//定义一个实现类 外部类
class Like implements ILike{

    @Override
    public void like() {
        System.out.println("I like you verymuch1");
    }
}

程序运行结果:

I like you verymuch3.
I like you verymuch4.
I like you verymuch5.

lambda表达式的简化:

package com.yuanyu.thread;

public class TestLambda {

    public static void main(String[] args) {
          ILove iLove=null;

//        ILove iLove=(int a,int b) ->{
//                System.out.println("I love you->"+a);
//            };
//
//        iLove=(a,b) ->{ //lambda表达式简化,去掉参数类型
//            System.out.println("I love you->"+a);
//        };
//
//        iLove=(a,b)->{ //lambda表达式简化,去掉括号
//            System.out.println("I love you->"+a);
//        };

        iLove=(a,b)->System.out.println("I love you->"+a+b);//lambda表达式简化,去掉花括号 lambda表达式只有一行才能这样
                                                            //若有多个参数 去掉参数类型时 需要都去掉 并加上括号
        iLove.love(520,1314);
    }
}

interface ILove{
    void love(int a,int b);
}

程序运行结果:

I love you->5201314

若Runnable接口实现的方法简单,也可以使用lambda表达式:

image

这篇关于java lambda表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!