java补完——λLamda表达式属于JDK1.8后(2014.3.18)

文章说明:黑色字体-已知,蓝色字体-所见即所得,红色字体-还需要再找资料弄明白的,黄色背景-提炼关键信息
参考资料:很多参考资料,段落下有原文链接到原作者

Lamda表达式(λ)须知

λ:希腊字母,第十一位。
应用场景:http://www.codebelief.com/article/2018/01/java-lambda-expression-common-application-scenarios/
1.为什么要使用Lamda表达式
避免匿名内部类定义过多、简洁代码、去掉没有意义的代码,留下核心逻辑。
2.Lamda表达式的书写格式看完推到过程记住语法就可以用Lamda了
new Thread(()->System.out.println(“Lamda表达式”)).start()
一条简化:函数式接口 对象 = 参数 -→ 内容
多条简化:函数式接口 对象 =(a,b)-→{内容}

注:不要误会,接口不能实例化。
3.Lamda表达式的前提(关键)
Functional Interface(函数式接口):只包含一个抽象方法。可以通过lambda表达式来创建函数式接口的对象。
4、Lamda表达式须知(结合推导过程看)
1)多个参数去掉参数类型,去就都去掉,保留就都保留,但是必须加上括号。
2)只有在方法中含有一条语句的情况下,才可以去掉{}。多条语句,不可去掉{}。

Lamda表达式推导过程

实现类→静态内部类→局部内部类→匿名内部类→Lamda表达式。
实现类:

public class TestLambda {
    public static void main(String[] args) {
        //实例化一个对象,调用方法
        Lambda1 lambda1 = new Lambda1();
        lambda1.lambdaMethod();
    }
}
//定义一个函数式接口:一个接口有且仅有一个方法;
interface LambdaInterface {
    void lambdaMethod();
}
//实现类
class Lambda1 implements LambdaInterface {

    @Override
    public void lambdaMethod() {
        System.out.println("Lambda1");
    }
}

静态内部类:

public class TestLambda {
    //静态内部类
    static class Lambda1 implements LambdaInterface {
        @Override
        public void lambdaMethod() {
            System.out.println("Lambda1");
        }
    }
    public static void main(String[] args) {
        //实例化一个对象,调用方法
        Lambda1 lambda1 = new Lambda1();
        lambda1.lambdaMethod();
    }
}
//定义一个函数式接口:一个接口有且仅有一个方法;
interface LambdaInterface {
    void lambdaMethod();
}

局部内部类:

public class TestLambda {
    public static void main(String[] args) {
        //局部内部类,注意要把它放在实例化之前
        class Lambda1 implements LambdaInterface {
            @Override
            public void lambdaMethod() {
                System.out.println("Lambda1");
            }
        }
        //实例化一个对象,调用方法
        Lambda1 lambda1 = new Lambda1();
        lambda1.lambdaMethod();
    }
}
//定义一个函数式接口:一个接口有且仅有一个方法;
interface LambdaInterface {
    void lambdaMethod();
}

匿名内部类:

public class TestLambda {
    public static void main(String[] args) {
        //匿名内部类:没有类的名称,必须借助接口或父类;
        LambdaInterface testLambda = new LambdaInterface() {
            @Override
            public void lambdaMethod() {
                System.out.println("Lambda1");
            }
        };
        testLambda.lambdaMethod();
    }
}
//定义一个函数式接口:一个接口有且仅有一个方法;
interface LambdaInterface {
    void lambdaMethod();
}

Lamda表达式:

public class TestLambda {
    public static void main(String[] args) {
        //匿名内部类:没有类的名称,必须借助接口或父类;
        LambdaInterface testLambda = new LambdaInterface() {
            @Override
            public void lambdaMethod() {
                System.out.println("Lambda1");
            }
        };
        testLambda.lambdaMethod();
        //用Lambda简化
        testLambda = () -> {
            System.out.println("Lambda2");
        };
        testLambda.lambdaMethod();
    }
}
//定义一个函数式接口:一个接口有且仅有一个方法;
interface LambdaInterface {
    void lambdaMethod();
}

Lamda表达式2:

public class TestLambda2 {
    public static void main(String[] args) {
        LambdaInterface2 lambdaInterface2 = null;
        //Lambda简化1:
        lambdaInterface2 = (int b) -> {
            System.out.println("简化1--->数值 = " + b);
        };
        lambdaInterface2.value(88);
        //Lambda简化2:简化参数类型
        //当有多个参数时,他们的参数类型要去掉就都去掉,要不然就都不去掉!!!
        lambdaInterface2 = (b) -> {
            System.out.println("简化2--->数值 = " + b);
        };
        lambdaInterface2.value(100);
        //Lambda简化3:简化括号
        //当有多个参数时,括号不可以被去掉!!!
        lambdaInterface2 = b -> {
            System.out.println("简化3--->数值 = " + b);
        };
        lambdaInterface2.value(99);
        //Lambda简化4:简化花括号
        //当方法体{}中只有一条执行语句(即:只有一个分号)时,才可以这样简化!!!
        //若方法体{}中有多条语句,必须用花括号{}包裹着;
        lambdaInterface2 = (b) -> System.out.println("简化4--->数值 = " + b);
        lambdaInterface2.value(77);
    }
}
interface LambdaInterface2 {
    void value(int b);
}

原文链接:https://blog.youkuaiyun.com/weixin_45683851/article/details/103302081

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值