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

    简化代码,避免匿名内部类定义过多

    学习Lamda表达式的关键在于理解Functional Interface(函数式接口)

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

                                       public interface Runnable {

                                                   public abstract void run();

                                       }

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

    package com.wang.lamda;

    public class LamdaDemo01 {
       //3、静态内部类
       //把实现类写成静态内部类
       static class Like2 implements ILike{

           @Override
           public void Lambda() {
               System.out.println("i like lambda2");
          }
      }
       public static void main(String[] args) {
           //接口new实现类
           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();

        //5、匿名内部类,没有类的名称,必须借助接口或父类
            like=new ILike() {
                @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");
      }
    }
    package com.wang.lamda;

    public class LambdaDemo {
       //4、外部类放到内部 静态内部类
       static class Love2 implements ILove{
           @Override
           public void love(int a) {
               System.out.println("i love you "+a);
          }
      }
       //main方法
       public static void main(String[] args) {
           ILove love=new Love();
           love.love(1);

           love=new Love2();
           love.love(2);

       //5、局部内部类
       class Love3 implements ILove{
        @Override
               public void love(int a) {
                   System.out.println("i love you "+a);
          }
      }

           love=new Love3();
           love.love(3);

        //6、匿名内部类
           love=new ILove() {
               @Override
               public void love(int a) {
                   System.out.println("i love you "+a);
              }
          };
           love.love(4);

        //7、Lambda表达式简化 方法中有参数
           love=(int a)->{ System.out.println("i love you "+a); };
           love.love(5);
           //7.1 简化Lambda
           love=a -> {
               System.out.println("i love you "+a);
          };
           love.love(6);
           //7.2
           love=a -> System.out.println("i love you "+a);
           love.love(7);
           
      }
    }
    //1、定义接口
    interface ILove{
       //2、写方法,接口中是抽象方法,不用写abstract
       void love(int a);
    }
    //3、实现类
    class Love implements ILove{

       @Override
       public void love(int a) {
           System.out.println("i love you "+a);
      }
    }

      总结

    Lambda表达式:

    只有一行代码的情况下才能去掉花括号,只剩下一行
    多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
    前提是接口是函数式接口

  • 相关阅读:
    xampp只允许本地访问,禁止远程访问
    Centos 7 安装 设置 IP地址,DNS,主机名,防火墙,端口,SELinux (实测+笔记)
    centos 7.0 网卡配置及重命名教程
    VS2010 安装 MVC3 Entity Framework
    SQL 增加删除库表
    轻松绕各种WAF的POST注入、跨站防御(比如安全狗)
    CRM协同8.2升级到9.2SP2步骤
    [转]EasyUI+MVC+EF简单用户管理Demo(问题及解决)
    设置VMware随系统开机自动启动并引导虚拟机操作系统
    项目管理——随笔 2015.06.05
  • 原文地址:https://www.cnblogs.com/wyj96/p/11979706.html
Copyright © 2011-2022 走看看