zoukankan      html  css  js  c++  java
  • lambda表达式

    为什么要使用lambda表达式

    1. 避免匿名内部类定义过多
    2. 可以让代码看起来很简洁
    3. 去掉了一些没有意义的代码,只留下核心的逻辑
    4. 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象

    什么是函数式接口

    1. 在任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
    public interface Runnable{
        public abstract void run(); 
    }
    
    1. 对于函数式接口,我们可以用lambda表达式来创建该接口的对象。

    lambda的推导:

    package Demo04;
    
    public class TestLambda1 {
        //3.静态内部类
       static class Like2 implements ILike{
            @Override
            public void lambda() {
                System.out.println("I like lambda2");
            }
        }
        public static void main(String[] args) {
           ILike like = new Like();
            like.lambda();
            like=new Like2();
            like.lambda();
    
            //4.局部内部类
            class Like3 implements ILike{
                @Override
                public void lambda() {
                    System.out.println("I like lambda3");
                }
            }
            like = new Like3();
            like.lambda();
    
            //匿名内部类  没有类的名称,必须借助接口或者的父类
            like= new Like() {
                @Override
                public void lambda() {
                    System.out.println("I like lambda4");
                }
            };
            like.lambda();
    
            //6.用lambda简化
            like = ()->{
                System.out.println("I like lambda5");
            };
            like.lambda();
    
    
        }
    
    }
    //1.定义一个函数式接口(任何接口,如果只包含唯一一个抽象方法,那么它就是提个函数式接口)
    interface ILike{
        void lambda();
    }
    //2.实现类
    class Like implements ILike{
        @Override
        public void lambda() {
            System.out.println("I like lambda");
        }
    }
    

    lambda表达式的简化

    package Demo04;
    
    public class TestLambda2 {
    
        public static void main(String[] args) {
            //lambda表达式简化
            ILove love = (int a) -> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化1.去掉参数类型
            love=(a)-> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化2.去掉小括号
            love=a-> {
                System.out.println("I love you-->" + a);
            };
    
    
            //简化3:去掉大括号(最终形态的lambda表达式)
            love=a -> System.out.println("I love you-->" + a);
            love.love(2);
        }
    }
    
    
    interface ILove {
        void love(int a);
    }
    
    

    总结

    1. lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行,就用代码快包裹。
    2. lambda表达式前提要是函数式接口
    3. 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
  • 相关阅读:
    【转】VB 技巧一
    VB中的trim()函数
    转:vb实现老板键功能
    VB为自己的程序设定消息(可接收处理)
    RegisterHotKey的具体使用方法
    GetPrivateProfileString
    在VB语言中,DOEVENTS的具体的用法和含义
    VB中的ADO数据对象编程
    jquery操作select下拉列表框
    jQuery对Select的操作集合
  • 原文地址:https://www.cnblogs.com/godles/p/11950174.html
Copyright © 2011-2022 走看看