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表达式:

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

  • 相关阅读:
    Serialize and Deserialize Binary Tree
    sliding window substring problem汇总贴
    10. Regular Expression Matching
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第七章 链接
    程序员如何写一份合格的简历?(附简历模版)
    9个提高代码运行效率的小技巧你知道几个?
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第六章 存储器层次结构
    24张图7000字详解计算机中的高速缓存
    《深入理解计算机系统》(CSAPP)实验四 —— Attack Lab
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能
  • 原文地址:https://www.cnblogs.com/wyj96/p/11979706.html
Copyright © 2011-2022 走看看