JavaSE:Java基础7:java8新特性

java8新特性

 

JavaSE:Java基础7:java8新特性_第1张图片

 

新特性推出原因:速度更快 ,代码更少,强大的Stream  API,便于并行,最大化减少空指针异常Optional。

 

Lambda表达式:Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码
像数据一样进行传递)。可以写出更简洁、更灵活的代码。

上两个demo

demo1

JavaSE:Java基础7:java8新特性_第2张图片

demo2

JavaSE:Java基础7:java8新特性_第3张图片

 

 

Lambda表达式语法

Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “- > ” , 该操作符被称
为 Lambda 操作符或剪头操作符。它将 Lambda 分为两个部分:
左侧:指定了 Lambda 表达式需要的所有参数
右侧:指定了 Lambda 体,即 Lambda 表达式要执行的功能(实现的方法)。 

JavaSE:Java基础7:java8新特性_第4张图片

JavaSE:Java基础7:java8新特性_第5张图片

类型推断: Lambda 表达式中的参数类型都是由编译器推断得出的。Lambda 表达式中无需指定类型,程序依然可以编译,这因为 javac 根据程序的上下文,在后台推断出了参数的类型。Lambda 表达式的类型依赖于上下文环境,是由编译器推断出来的。这就是所谓的“类型推断” 。

Optional类:Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。

常用方法:
Optional.of(T t) : 创建一个 Optional 实例
Optional.empty() : 创建一个空的 Optional 实例
Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例
isPresent() : 判断是否包含值
orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值
map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
flatMap(Function mapper):与 map 类似,要求返回值必须是Optional

JavaSE:Java基础7:java8新特性_第6张图片

https://mp.weixin.qq.com/s?__biz=MzIxMDAwMDAxMw==&mid=2650725139&idx=1&sn=a57d3f21b6022c855cabdb046fcb81fa&chksm=8f613af1b816b3e7452de222df83b8e36a8f7835be43c1ebfdf2489fc7dad53ec983f6e8de8f&mpshare=1&scene=23&srcid=&sharer_sharetime=1576025255639&sharer_shareid=12ae0c9c538778cd36ca6e4500b81b6f#rd

分析Java Stream操作

https://www.jetbrains.com/help/idea/analyze-java-stream-operations.html

Optional类在项目里的运用

service层:

public Optional> getXXBySystemId(String systemId) {
        Optional> optional = Optional.empty();
        if (StringUtils.isNotBlank(systemId)) {
            String xxSystemId = ((DXXVO)this.iDXXService.getDXXById(systemId).orElseGet(DXXVO::new)).getAXXSystemId();
            List vxxDOList = this.ixxdDAO.getVxxBySystemId(axxSystemId);
            if (CollectionUtils.isNotEmpty(vxxDOList)) {
                optional = Optional.of(vxxDOList);
            }
        }

        return optional;
    }

Lambda表达式在项目里的运用

JavaSE:Java基础7:java8新特性_第7张图片

Stream流在项目里的运用

JavaSE:Java基础7:java8新特性_第8张图片 

你可能感兴趣的:(JavaSE)