zoukankan      html  css  js  c++  java
  • java8 Lambda表达式学习笔记

    Lambda表达式学习笔记

    • 当某个接口中只有一个抽象方法(不包括静态方法和默认方法),该接口称为 FunctionalInterface ,仅当这种接口,我们可以使用lambda表达式来实现该接口方法。可以在接口上标注@FunctionalInterface标签,可以用于校验该接口是否可以使用Lambda方式,比如你在接口中声明了两个public的方法,这时候你还添加了 @FunctionalInterface标签处会报错;java原本的很多接口在java8之后都加上了这个标签,可以参见Runable接口和Comparator接口

    • lambda表达式的特点主要包括:
      1.匿名的
      2.函数式的
      3.可以传参的
      4.清晰简洁的

    • lambda表达式注意点
      1.“->”后带有花括号,就要有return关键字
      2.参数如果超过一个,所有参数就必须用“()”扩住
      3.参数的类型可以省略掉,会根据方法推导出相应的类型

    • lambda表达式的语法构成
      参数列表  |  方法体部分

    (o1, o2)  ->  o1.getColor().compareTo(o2.getColor());

    举例几个合法的lambda表达式
    (String ss) -> ss.length();
    (Apple a) -> a.getColor.equals("red");

    • lambda相当于是一个匿名函数,当在lambda的函数体类使用调用lambda函数的主函数中的变量时,该变量默认转换成final类型的。即:

    public static void main(String[] args){
      int i=0;
      Runnable runnable = () -> System.out.println(i++);
    }
    此时写成i++是错误的,在lambda使用了i的时候,就默认将i改为final类型的变量了。

    同样的,如果是lambda里正常只读的i,但是在lambda之后又对i进行了改变,这时候lambda里的i同样会编译失败。

  • 相关阅读:
    【连载】【FPGA黑金开发板】Verilog HDL那些事儿VGA(二十)
    【黑金动力社区】【FPGA黑金开发板】Verilog HDL的礼物 Verilog HDL扫盲文
    FPGA黑金开发板勘误
    触发器入门(转)
    SQL Server 索引结构及其使用(三)[转]
    SQL Server 索引结构及其使用(一)(转)
    项目开发管理二(转)
    Ajax在网页中的简单应用
    Ajax简单介绍
    Asp.Net异步数据绑定
  • 原文地址:https://www.cnblogs.com/EtherealWind/p/14954417.html
Copyright © 2011-2022 走看看