zoukankan      html  css  js  c++  java
  • lambdas了解

    Lambdas了解

    功能接口的一个极其宝贵的特性是可以使用lambdas实例化它们。以下是一些关于lambdas的例子:


    以逗号分隔的输入列表,左边是指定类型的输入,右边是返回的块:         (int x,int y)-> {return x + y;}

    以逗号分隔的输入列表,左侧为推断类型,右侧为返回值:                                (x,y)- > x + y

    左侧为推断类型的单参数,右侧为返回值:                                                              x -> x * x

    左边没有输入(正式名称:“burger arrow”),右侧返回值:                                            ()- > x

    在左边有推断类型的单参数,在右边没有返回(空返回)的块:                                   x - > { System.out.println(x);}

    静态方法参考:                          String::valueOf

    非静态方法参考:                      Object::toString

    捕捉方法参考:                                  x::toString

    构造函数参考:                      ArrayList::new

    你可以把方法参考表格看作是其他形式的缩写。


    方法参考等价的表达式

    字符串:返回对象的值x - > String.valueOf(x)

    对象::x - > x.toString tostring()

    x:tostring()- > x.toString()

    ArrayList::new()- > new ArrayList <>()

    当然,Java中的方法可以重载。类可以有多个具有相同名称但不同参数的方法。它的构造函数也一样。ArrayList::new可以引用它的三个构造函数中的任何一个。它解决的方法取决于它所使用的功能接口。

     以下是两种不能使用错误的例子:

    例1:

    int count = 0;
    List<String> strings = Arrays.asList("a", "b", "c");
    strings.forEach(s -> {
        count++; // 错误:不能修改count的值
    });
    例2:
    void appendAll(Iterable<String> values, Appendable out) throws IOException { // doesn't help with the error values.forEach(s -> { out.append(s); // 错误:不能在这里抛出IOException // Consumer.accept(T) doesn't allow it }); }

    以上是本人对Lambdas的了解性知识,日常遇到的情况可以试着用一下,没有进行深入研究,仅供参考。
  • 相关阅读:
    MongoDB Query 的几个方法
    jQuery日期和时间插件(jqueryuitimepickeraddon.js)中文破解版使用
    entity framework使用技巧
    SQL Server TSQL高级查询
    Visual Studio 2012资源管理器里单击打开改为双击打开文件
    ASP.NET MVC 3发布报错(ASP.NET MVC 3在没有安装环境的服务器上运行)的解决方案
    排序算法时间测试比较
    读书笔记之:C++ STL 开发技术导引3
    如何判断整数x的二进制中含有多少个1
    面试题:2012民生银行总行笔试题
  • 原文地址:https://www.cnblogs.com/fengleixue/p/8194787.html
Copyright © 2011-2022 走看看