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. 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
  • 相关阅读:
    Windows10系统中实现Android的SDK和Android studio的配置
    神经网络框架-Pytorch使用介绍
    在各个平台系统中安装Pytorch
    Jetbrain的破解
    python的collections模块的学习
    python自带的用于解析HTML的库HtmlParser
    python利用urllib和urllib2抓取百度贴吧的页面程序并下载下来在本地
    Windows下多个版本的python的使用(粘贴其他人的博客只用于自己学习,如有侵权直接删帖)
    线程同步的几种方法
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/godles/p/11950174.html
Copyright © 2011-2022 走看看