zoukankan      html  css  js  c++  java
  • jQueryrocket

    Lamda表达式

    1、λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda
    2、避免匿名内部类定义过多
    3、可以让你的代码看起来很简洁
    4、去掉了一堆没有意义的代码,留下核心的逻辑
    3、其实质属于函数式编程的概念

    (params)-> expression[表达式]
    (params) -> statement[语句]
    (params) -> {statements}
    1、理解Functional interface(函数式接口)是学习java8 lamda表达式的关键所在。

    2、函数式接口的定义:
    任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

    对于函数式接口,我们可以通过lamda表达式来创建该接口的对象

    推导:

    package com.kaspar.lamda;
    
    public class TestLamda01 {
    
        //3、静态内部类,同样实现ILike接口
        static class Like2 implements ILike{
            @Override
            public void lamda() {
                System.out.println("i like lamda2");
            }
        }
    
        public static void main(String[] args) {
            ILike like = new Like();
            like.lamda();
            like = new Like2();
            like.lamda();
    
            //4、局部内部类
            class Like3 implements ILike{
                @Override
                public void lamda() {
                    System.out.println("i like lamda3");
                }
            }
            like = new Like3();
            like.lamda();
    
            //5、匿名内部类,没有类的名称。必须借助接口或者父类
            like = new ILike() {
                @Override
                public void lamda() {
                    System.out.println("i like lamda4");
                }
            };
            like.lamda();
    
            //6、lamda表达式
            like = ()->{
                System.out.println("i like lamda5");
            };
            like.lamda();
        }
    }
    
    
    //1、定义一个只有一个抽象方法的接口
    interface ILike{
        abstract void lamda();
    }
    
    //2、实现类
    class Like implements ILike{
    
        @Override
        public void lamda() {
            System.out.println("i like lamda1");
        }
    }

    Eg.2:

    package com.kaspar.lamda;
    
    public class TestLamda02 {
    
        public static void main(String[] args) {
            ILive live = null;
    
            //Lamda简化
            live = (int a)->{
                System.out.println("I live you"+a);
            };
            live.live(1);
    
            //Lamda简化参数类型
            live = (a)->{
                System.out.println("I live you"+a);
            };
            live.live(2);
    
            //Lamda简化括号
            live = a->{
                System.out.println("I live you"+a);
            };
            live.live(3);
    
            //Lamda简化花括号(只有一条语句时)
            live = a->System.out.println("I live you"+a);
            live.live(4);
        }
    
    }
    
    interface ILive{
        abstract void live(int a);
    }

    Eg.3:

    package com.kaspar.lamda;
    
    public class TestLamda03 {
    
        public static void main(String[] args) {
            ILive live = null;
    
            //Lamda简化
            live = (int a,int b)->{
                System.out.println("I live you"+a+b);
            };
            live.live(1,1);
    
            //Lamda简化参数类型(要去掉就要都去掉)
            live = (a,b)->{
                System.out.println("I live you"+a+b);
            };
            live.live(2,2);
    
    
            //Lamda简化花括号(只有一个语句时)
            live = (a,b)->System.out.println("I live you"+a+b);
            live.live(3,3);
        }
    
    }
    
    interface ILive{
        abstract void live(int a,int b);
    }
  • 相关阅读:
    Day 20 初识面向对象
    Day 16 常用模块
    Day 15 正则表达式 re模块
    D14 模块 导入模块 开发目录规范
    Day 13 迭代器,生成器,内置函数
    Day 12 递归,二分算法,推导式,匿名函数
    Day 11 闭包函数.装饰器
    D10 函数(二) 嵌套,命名空间作用域
    D09 函数(一) 返回值,参数
    Day 07 Day08 字符编码与文件处理
  • 原文地址:https://www.cnblogs.com/kaspar/p/14131820.html
Copyright © 2011-2022 走看看