Lambda表达式

前言:在jdk1.8的新特性中,新增了lamda表达式,以避免匿名内部类使用过多。

理解Lambda表达式,首先要了解函数式接口(Functional Interface)。这是学习Lamda表达式的关键。
那么什么是函数式接口呢?
函数式接口的定义就是:
对于任何接口,如果这个接口中只含有唯一的一个抽象方法,那么,这个接口就是函数式接口。
比如说Runnable接口,我们来看Runnable接口的实现代码。

@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}

在Runnable接口中,只存在一个抽象方法run()。
而我们可以通过Lambda表达式就能够创建该接口的对象。

下面我们推导一下lamda表达式(可看B站狂神说):

        package com.cui.java8;

/*
* @autor czy
* 推导lambda表达式
* */
public class Lamda{
    //3.静态内部类
    static class Like2 implements ILike{
        @Override
        public void Lambda() {
            System.out.println("I like lambda2!");
        }
    }

    public static void main(String[] args) {
        ILike iLike = new Like();
        iLike.Lambda();

        iLike=new Like2();
        iLike.Lambda();

        //4.局部内部类
        class Like3 implements ILike{
            @Override
            public void Lambda() {
                System.out.println("I like lambda3!");
            }
        }
        iLike = new Like3();
        iLike.Lambda();


        //5.匿名内部类
        iLike = new ILike() {
            @Override
            public void Lambda() {
                System.out.println("I like lambda4!");
            }
        };
        iLike.Lambda();


        //6.Lambda简化匿名内部类
        iLike = ()->{
            System.out.println("I like lambda5!");
        };
        iLike.Lambda();
    }

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

//2.实现类
class Like implements ILike{
    @Override
    public void Lambda() {
        System.out.println("I like Lambda!");
    }
}

以上便是Lambda的推导过程
如果看上面代码觉得乱,可看下面代码:

package com.cui.java8;

public class Lambda2 {
    public static void main(String[] args) {
        LoveU loveU = (a)->{
            System.out.println("you are "+a);
        };
        loveU.loveu(250);
    }

}
interface LoveU{
    void loveu(int a);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值