• Lambda表达式


    一--介绍

    Lambda 表达式(lambda expression)是一个匿名函数,即没有函数名的函数。

    二---为什么要使用Lambda表达式

    1)避免匿名内部类定义过多

    2)可以让你的代码看起来很简洁

    3)去掉一堆没有意义的代码,只留下核心的逻辑

    三---理解函数式接口

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

    1 public interface Runnable {
    2     public abstract void run();
    4 }

    那么这个函数式接口如何去创建对象呢?这时候Lambda就出场了。可以通过Lambda表达式来创建该接口的对象。

     1 public class TestLambda1 {
     2     // 3)静态内部类
     3     static class Like2 implements Ilike {
     4         @Override
     5         public void lambda() {
     6             System.out.println("i like lambda2");
     7         }
     8     }
     9 
    10 
    11 
    12 
    13     public static void main(String[] args) {
    14         Ilike like = new Like();
    15         like.lambda();
    16         like = new Like2();
    17         like.lambda();
    18 
    19         // 4)局部内部类
    20         class Like3 implements Ilike {
    21             @Override
    22             public void lambda() {
    23                 System.out.println("i like lambda3");
    24             }
    25         }
    26         like = new Like3();
    27         like.lambda();
    28 
    29         // 5)匿名内部类,没有类的名称,必须借助接口或者父类
    30         like = new Ilike() {
    31             @Override
    32             public void lambda() {
    33                 System.out.println("i like lambda4");
    34             }
    35         };
    36         like.lambda();
    37 
    38         // 6)用lambda简化
    39         like = () -> {
    40             System.out.println("i like lambda5");
    41         };
    42         like.lambda();
    43 
    44     }
    45 }
    46 
    47 // 1)定义一个函数式接口
    48 interface Ilike {
    49     void lambda(); // 这里不用加abstract 默认就是抽象的。
    50 }
    51 
    52 // 2)实现类
    53 class Like implements Ilike {
    54     @Override
    55     public void lambda() {
    56         System.out.println("i like lambda");
    57     }
    58 }

    用Lambda之后只需写核心语句,简化了其它语句。

  • 相关阅读:
    安卓开发学习——事件机制
    安卓开发学习——消息机制与异步任务
    安卓存储学习
    scrollTop, pageYOffset, scrollY 以及offsetTop 的区别
    BFC与IFC概念理解+布局规则+形成方法+用处
    JavaScript的作用域、作用域链和执行期上下文
    深入理解javascript原型和闭包系列
    【剑指Offer】剑指offer题目汇总
    CSS文件加载方式: @import 和 <link>
    jquery跨域:$.ajax 和$.getJSON
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14612216.html
Copyright © 2020-2023  润新知