lamada表达式

package com.inetTes01;
/*
需求:启动一个线程,在控制台输出一句话:多线程程序启动了

 */

import com.liushuaishuai.MyRunnable;

public class lamadaDemo {
    public static void main(String[] args) {
        //实现类的方式,需要提前写一个类myRunnbale实现了Runnable接口并且重写run方法
//        myRunnable my = new myRunnable();
//        Thread t = new Thread(my);
//        t.start();

        //匿名内部类的方式来改进
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                System.out.println("多线程程序启动了");
//            }
//        }).start();

        //lamada表达式的方式改进
        new Thread(() -> {
            System.out.println("多线程程序启动了");
        }).start();
    }

}

 


Lambda表达式的格式


格式: (形式参数)-> {代码块}
形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即呵
●->:由英文中画线和大于符号组成,固定写法。代表指向动作
代码块:是我们具体要做的事情,也就是以前我们写的方法体内容


Lambda表达式的练习
Lambda表达式的使用前提
●有一个接口,接口中有且仅有一个抽象方法


  练习1:
●定义一个接口(Eatable), 面定义一个抽象方法: void eat0;
●定义一个测试类(EatableDemo), 在测试类中提供两个方法
一个方法是: useEatable(Eatable e)
一个方法是主方法,在主方法中调用useEatable方法、


接口类

package com.inetTes01;

public interface Addable {
    int add (int x,int y);
}

测试类如下

package com.inetTes01;
/*
Lambda表达式的格式: (形式参数) -> {代码块}
练习3:
        1:定义一个接口(Addable),里面定义一个抽象方法: int add(int x,int y);
        2:定义一个测试类(AddableDemo),在测试类中提供两个方法
        一个方法是: useAddable(Addable a)
        一个方法是主方法,在主方法中调用useAddable方法

 */

public class AddableDemo {
    public static void main(String[] args) {
        useAddable((int x, int y) -> {
            //return x + y; //30
            return x - y;    //10  代码块里的内容即相当于接口实现类对方法的重写
        });
    }

    private static void useAddable(Addable a) {

        System.out.println(a.add(10, 20));//add相当于调用实现类中对add的重写
    }
}



原文地址:https://www.cnblogs.com/lsswudi/p/11442594.html