• 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);
    }
  • 相关阅读:
    Lucene.NET 开发实现
    WIN7安装配置 SharePoint2010 各种问题汇总
    Wince后台系统补丁更新实现
    Lucene.NET 若干知识点&&疑难杂症以及解决
    .NET设计模式系列文章 很有名的博客园TerryLee的系列文章,设计模式不可多得的好文
    客户端多线程应用的好工具:BackgroundWorker
    Swift、ObjectiveC 单例模式 (Singleton)
    字节对齐
    iOS中求出label中文字的行数和每一行的内容
    工作终于到的坑爹集锦,欢迎补充~
  • 原文地址:https://www.cnblogs.com/kaspar/p/14131820.html
Copyright © 2020-2023  润新知