【多线程-Lamda】

1. Lamda表达式

1.1 Lamda表达式的作用
  • 避免匿名内部类过多
  • 可是使代码看起来更简洁
  • 去掉无意义代码,保留核心逻辑
2. Lamda表达式使用条件
  • 理解Functional Interface(函数式接口)是学习Java8 lamda表达式的关键
  • 函数接口的定义:任何接口,如果只包含一个文艺的抽象方法,那么它既是一个函数式接口;对于函数式接口,我们可以通过lamda表达式创建该接口对象。

2. Lamda表示是演变过程

1. 例1 从步骤1.--------》6.
package Demo03;
/*
推到lamda表达式
 */
public class TestLamda1 {
    //3.实现静态内部类
    static class Read2 implements Iread{
        @Override
        public void lamda() {
            System.out.println("i reading nover2");
        }
    }
    public static void main(String[] args) {
        Read read = new Read();
        read.lamda();
        Read2 read2 = new Read2();
        read2.lamda();
        //4.实现局部内部类
        class Read3 implements Iread{
            @Override
            public void lamda() {
                System.out.println("i reading nover3");
            }
        }
        Read3 read3 = new Read3();
        read3.lamda();
        //5.使用内名内部类,没有类的名字。必须借助接口或父类
        Iread read4 = new Iread(){
            @Override
            public void lamda() {
                System.out.println("i reading nover4");
            }
        };
        read4.lamda();

        //6.使用lamda简化
        Iread read5 = ()->{
            System.out.println("i reading nover5");
        };
        read5.lamda();
    }
}
//1.定义一个接口式函数接口
interface Iread{
    public void lamda();
}
//2.实现外部类
class Read implements Iread{
    @Override
    public void lamda() {
        System.out.println("i reading nover1");
    }
}


2. 例2 有参方法
package Demo03;

public class TestLamda2 {
    public static void main(String[] args) {
        //2.局部实现类
        class Read1 implements Iread1{
            @Override
            public void lamda(String a) {
                System.out.println(a);
            }
        }
        Read1 read1 = new Read1();
        read1.lamda("nover1");
        //3.lamda表示简化
        Iread1 read2 = (String a)->{
            System.out.println(a);
        };
        read2.lamda("nover2");
        //4.简化lamda参数
        Iread1 read3 =(a)->{
            System.out.println(a);
        };
        read3.lamda("nover3");
        //5.简化lamda括号()
        Iread1 read4 = a->{
            System.out.println(a);
        };
        read4.lamda("nover4");
        //6.简化lamda括号{}
        Iread1 read5 = a-> System.out.println(a);
        read5.lamda("nover5");

        /*
        总结:
        lamda表达式只有一行代码的情况下,才能简化成一行,如果有多行,{}不能省
        lamda表达式实现的前提是接口为函数式接口
        多个参数省略参数类型时,必须是同时省略
         */
    }
}

//1.定义一个有参函数类接口
interface Iread1{
    void lamda(String a);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值