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

    Lamda表达式

    1、λ 希腊字母表中排序第十一位的字母,英语名称为 Lamda
    2、避免匿名内部类定义过多
    3、可以让你的代码看起来很简洁
    4、去掉了一堆没有意义的代码,留下核心的逻辑
    5、其实质属于函数式编程的概念
        (params)-> expression[表达式]
    	(params) -> statement[语句]
    	(params) -> {statements}
    语句:
    	a -> System.out.println("i like lamda-->"+a)
        new Thread (()->System.out.println(“多线程学习。。。。”)).start();
    

    怎么理解Lamda

    1、理解Functional interface(函数式接口)是学习java8 lamda表达式的关键所在。

    2、函数式接口的定义:

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

    推导Lamda表达式

    package com.liu.thread.demo3;
    
    public class Lamda {
        //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");
        }
    }
    

    输出:

    带一个参数的Lamda简化

    package com.liu.thread.demo3;
    
    public class Lamda2 {
        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);
    }
    

    输出:

    带多个参数的Lamda简化

    package com.liu.thread.lamda;
    
    public class Lamda3 {
        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);
    }
    

    输出:

    总结

    lambda表达式只能有一-行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹。
    
    前提是接口为函数式接口
    
    多个参数也可以去掉参数类型,要去掉的话都去掉,必须加上()
    
  • 相关阅读:
    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)转
    转载 获取管理员权限
    Linux端图形处理工具ImageMagick在Centos上的安装
    JQUERY 的AJAX只执行一次问题
    ASP.NET项目常见错误信息:HRESULT:0x800736B1
    存储过程(我们简称SP)的编写和优化
    sql server中扩展存储过程大全
    Range对象基本操作应用示例(2)
    让IIS支持DZ和PW的伪静态方法
    js日期时间函数(经典+完善+实用)
  • 原文地址:https://www.cnblogs.com/lhy8116/p/14205490.html
Copyright © 2011-2022 走看看