• Atitit.jdk java8的语法特性详解 attilax 总结


    Atitit.jdk java8的语法特性详解 attilax 总结

     

    1.1. 类型推断这个特别有趣的、鲜为人知的特性1

    2Lambda1

    2.1. 内部迭代意味着改由Java类库来进行迭代,而不是客户代码。例如:1

    2.2. Stream 流失接口 管道(pipelines)模式2

    2.3. 方法引用(Method reference2

    2.4.  默认方法(Default method2

    2.5. 生成器函数(Generator function2

    2.6. 新加入的Nashorn引擎也使得Java程序可以和JavaScript代码互操作3

    3reef3

     

     

    1.1. 类型推断这个特别有趣的、鲜为人知的特性

    2. Lambda

    Java中,随声明随调用的方式是不行的,比如下面这样,声明了一个λ表达式(x, y) -> x + y,同时企图通过传入实参(2, 3)来调用它:

        int five = ( (x, y) -> x + y ) (2, 3); // ERROR! try to call a lambda in-place

    这在C++中是可以的,但Java中不行。Javaλ表达式只能用作赋值、传参、返回值等。

    使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。

    Java 8 引入的一个核心概念是函数式接口。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。

    2.1. 内部迭代意味着改由Java类库来进行迭代,而不是客户代码。例如:

    集合类(包括List)现在都有一个forEach方法,对元素进行迭代(遍历),所以我们不需要再写for循环了。forEach方法接受一个函数接口Consumer做参数,所以可以使用λ表达式。

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://www.cnblogs.com/attilax/

     

    2.2. Stream 流失接口 管道(pipelines)模式

     

    2.3. 方法引用(Method reference

    任何一个λ表达式都可以代表某个函数接口的唯一方法的匿名描述符。我们也可以使用某个类的某个具体方法来代表这个描述符,叫做方法引用。例如:

        Integer::parseInt //静态方法引用
        System.out::print //实例方法引用
        Person::new       //构造器引用

    2.4.  默认方法(Default method

    Java8中,接口声明里可以有方法实现了,叫做默认方法。在此之前,接口里的方法全部是抽象方法。

     

    这实际上混淆了接口和抽象类,但一个类仍然可以实现多个接口,而只能继承一个抽象类。

    这么做的原因是:由于Collection库需要为批处理操作添加新的方法,如forEach()stream()等,但是不能修改现有的Collection接口——如果那样做的话所有的实现类都要进行修改,包括很多客户自制的实现类。所以只好使用这种妥协的办法。

     

    2.5. 生成器函数(Generator function

    有时候一个流的数据源不一定是一个已存在的集合对象,也可能是个生成器函数。一个生成器函数会产生一系列元素,供给一个流。Stream.generate(Supplier<T> s)就是一个生成器函数。其中参数Supplier是一个函数接口,里面有唯一的抽象方法 <T> get()

    下面这个例子生成并打印5个随机数:

        Stream.generate(Math::random).limit(5).forEach(System.out::println);

    注意这个limit(5),如果没有这个调用,那么这条语句会永远地执行下去。也就是说这个生成器是无穷的。这种调用叫做终结操作,或者短路(short-circuiting)操作。

    2.6. 新加入的Nashorn引擎也使得Java程序可以和JavaScript代码互操作

    3. reef

     

    Java8 Lambda表达式教程 自由之子 博客频道 - CSDN.NET.htm

     

     

  • 相关阅读:
    【翻译】R 中的设计模式
    CLR 协变、逆变
    设计模式之工厂模式
    c# 浮点数计算问题
    WebAPI参数传值string转bool,int转bool相关问题
    CLR via c# 值类型“不可变”
    C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】
    c# 关于字段内存排序
    《拖拉一点也无妨》读后感
    .NET CORE 学习笔记之安装EF【Microsoft.EntityFrameworkCore】扩展报错
  • 原文地址:https://www.cnblogs.com/attilax/p/5194131.html
Copyright © 2020-2023  润新知