博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
se 类java_Java SE 9:可选的类改进
阅读量:2542 次
发布时间:2019-05-11

本文共 8856 字,大约阅读时间需要 29 分钟。

se 类java

发表简要目录: (Post Brief Table of Content:)

  • Introduction

    介绍
  • Java SE 8: Optional Class Basics

    Java SE 8:可选的类基础知识
  • Java SE 8: Optional Basic Example

    Java SE 8:可选基本示例
  • Java SE 9: Optional Class Improvements

    Java SE 9:可选的类改进
  • Java SE 9: Optional stream() Method

    Java SE 9:可选stream()方法
  • Java SE 8 Style: Optional Methods

    Java SE 8样式:可选方法
  • Java SE 9: Optional ifPresentOrElse() Method

    Java SE 9:可选的ifPresentOrElse()方法
  • Java SE 9: Optional or() Method

    Java SE 9:可选or()方法

介绍 (Introduction)

In this post, we are going to discuss about “How Java SE 8’s Optional class solves null check problem?” and also “Java SE 9’s Optional class improvements”.

在本文中,我们将讨论“ Java SE 8的Optional类如何解决空检查问题?”。 以及“ Java SE 9的可选类改进”。

As a Java Developer, we know how much work we used to do for null checks for each and every object to avoid NullPointerException errors.

作为Java开发人员,我们知道为了避免NullPointerException错误,我们为每个对象执行空检查需要做多少工作。

Java SE 8:可选的类基础知识 (Java SE 8: Optional Class Basics)

Oracle Corp has introduced Optional class as part of “java.util” package. It is a container object which may or may not contain a non-null value.

Oracle Corp已将Optional类作为“ java.util”包的一部分引入。 它是一个容器对象,可能包含也可能不包含非null值。

It is mainly used to avoid lot of null checks and NullPointerException issues. Even though is part of java.util package, but it does NOT implement any Collection API interfaces. It extends Object class as shown below.

它主要用于避免大量的空检查和NullPointerException问题。 尽管它是java.util包的一部分,但它没有实现任何Collection API接口。 它扩展了Object类,如下所示。

public final class Optional
extends Object

It is final class and we cannot override it. If Optional object is NOT empty, that means a value is present in it. If it is empty, then a value is absent as shown below.

这是最后一堂课,我们不能覆盖它。 如果Optional对象不为空,则表示其中存在一个值。 如果为空,则不存在如下所示的值。

Java SE 8:可选基本示例 (Java SE 8: Optional Basic Example)

In this section, we will explore on how to use Java SE 8 Optional object to avoid null checks and NullPointerExceptions.

在本节中,我们将探讨如何使用Java SE 8 Optional对象来避免null检查和NullPointerExceptions。

Example:-

It is simple and basic example on Optional class. It demonstrates how to create an empty Optional object using Optional.empty() and how to create non-empty Optional object.

例:-

这是Optional类的简单基础示例。 它演示了如何使用Optional.empty()创建空的Optional对象,以及如何创建非空的Optional对象。

import java.util.Optional;public class JavaSE8OptionalDemo{  public static void main(String[] args)  {    System.out.println(division(4,2));    System.out.println(division(4,0));  }  public static Optional
division(Integer i1,Integer i2) { if(i2 == 0) return Optional.empty(); else { Integer i3 = i1/i2; return Optional.of(i3); } }}

Outuput:-

输出:

Optional[2]Optional.empty

Java SE 9:可选的类改进 (Java SE 9: Optional Class Improvements)

In Java SE 9, Oracle Corp has introduced the following three methods to improve Optional functionality.

在Java SE 9中,Oracle Corp引入了以下三种方法来改进Optional功能。

  • stream()

    流()
  • ifPresentOrElse()

    ifPresentOrElse()
  • or()

    要么()

We will pick up these methods one by one and discuss in-detail with some suitable examples in the coming sections.

我们将逐一介绍这些方法,并在接下来的部分中详细讨论一些合适的示例。

Java SE 9:可选stream()方法 (Java SE 9: Optional stream() Method)

If a value present in the given Optional object, this stream() method returns a sequential Stream with that value. Otherwise, it returns an Empty Stream.

如果给定的Optional对象中存在一个值,则此stream()方法将返回一个具有该值的顺序Stream。 否则,它将返回一个空流。

They have added “stream()” method to work on Optional objects lazily as shown below:

他们添加了“ stream()”方法来延迟对可选对象的工作,如下所示:

Stream
emp = getEmployee(id)Stream empStream = emp.flatMap(Optional::stream)

Here Optional.stream() method is used convert a Stream of Optional of Employee object into a Stream of Employee so that we can work on this result lazily in the result code.

这里使用Optional.stream()方法将Employee的Optional对象的Stream转换为Employee的Stream,以便我们可以在结果代码中懒惰地处理此结果。

Java SE 8样式:可选方法 (Java SE 8 Style: Optional Methods)

In Java SE 8, we should use ifPresent(), isPresent(), orElse() etc. methods to check an Optional object and perform some functionality on it. It’s bit tedious process to perform this. However, Java SE 9 has introduced a new method to overcome this problem.

在Java SE 8中,我们应该使用ifPresent(),isPresent()或Else()等方法来检查Optional对象并对其执行一些功能。 执行此过程比较繁琐。 但是,Java SE 9引入了一种新方法来克服此问题。

Let us explore Java SE 8 style in this section. We will explore that new method in next section.

让我们在本节中探讨Java SE 8样式。 我们将在下一部分中探索该新方法。

Here we are going to explore the following three Optional class methods:

在这里,我们将探索以下三个Optional类方法:

  • ifPresent()

    ifPresent()
void ifPresent(Consumer action)

If a value is present, performs the given action with the value, otherwise does nothing.

如果存在值,则使用该值执行给定的操作,否则不执行任何操作。

  • isPresent()

    存在()
  • boolean isPresent()

    If a value is present, returns true, otherwise false.

    如果存在值,则返回true,否则返回false。

  • orElse()

    要不然()
  • public T orElse(T other)

    If a value is present, returns the value, otherwise returns other.

    如果存在值,则返回该值,否则返回other。

    Example:-

    例:-

    import java.util.Optional;public class JavaSE8OptionalDemo{  public static void main(String[] args)  {        Optional
    opt1 = division(4,2); opt1.ifPresent( x -> System.out.println("Option1: Result found = " + x)); Optional
    opt2 = division(4,0); opt2.ifPresent( x -> System.out.println("Option2: Result found: " + x)); System.out.println("Option2: Result not found, default vlaue = " + opt2.orElse(new Integer(0))); if(opt2.isPresent()) System.out.println("Option2: Result found."); else System.out.println("Option2: Result not found."); } public static Optional
    division(Integer i1,Integer i2) { if(i2 == 0) return Optional.empty(); else { Integer i3 = i1/i2; return Optional.of(i3); } }}

    Outuput:-

    输出:

    Option1: Result found = 2Option2: Result not found, default vlaue = 0Option2: Result not found.

    Java SE 9:可选的ifPresentOrElse()方法 (Java SE 9: Optional ifPresentOrElse() Method)

    In section, we explore same kind of scenarios by using Java SE 9’s Optional ifPresentOrElse() Method. It combines all those methods like ifPresent(), isPresent() and orElse() methods in a nice way.

    在本节中,我们将通过使用Java SE 9的Optional ifPresentOrElse()方法来探索相同类型的场景。 它以一种很好的方式结合了所有这些方法,例如ifPresent(),isPresent()和orElse()方法。

    Java SE 9 Optional ifPresentOrElse() API:-

    Java SE 9可选的ifPresentOrElse()API:-

    public void ifPresentOrElse(Consumerl
    action, Runnable emptyAction)

    If a value is present, performs the given action with the value, otherwise performs the given empty-based action.

    如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。

    ifPresentOrElse() Example:-

    ifPresentOrElse()示例:-

    jshell> Optional
    opt1 = Optional.of(4)opt1 ==> Optional[4]jshell> opt1.ifPresentOrElse( x -> System.out.println("Result found: " + x), () -> System.out.println("Not Found."))Result found: 4jshell> Optional
    opt2 = Optional.empty()opt2 ==> Optional.emptyjshell> opt2.ifPresentOrElse( x -> System.out.println("Result found: " + x), () -> System.out.println("Not Found."))Not Found.

    Java SE 9:可选or()方法 (Java SE 9: Optional or() Method)

    In Java SE 9 Optional API, or() method is used to return a value, if Optional contains a value. Otherwise returns a value specified in the Supplier. This or() method takes a Supplier as an argument to specify a default value

    在Java SE 9中,如果Optional包含值,则使用or()方法返回值。 否则,返回供应商中指定的值。 此or()方法将Supplier作为参数指定默认值

    Java SE 9 Optional or() API:-

    Java SE 9可选or()API:-

    public Optional
    or(Supplier
    > supplier)

    Let us see an example with a value present in Optional first.

    让我们来看一个示例,该示例首先在Optional中存在一个值。

    Java SE 9 Optional or() Example-1:-

    Java SE 9可选or()示例1:-

    jshell> Optional
    opStr = Optional.of("Rams")opStr ==> Optional[Rams]jshell> import java.util.function.*jshell> Supplier
    > supStr = () -> Optional.of("No Name")supStr ==> $Lambda$67/222624801@23faf8f2jshell> opStr.or(supStr)$5 ==> Optional[Rams]

    Let us see an example with a value not-present in Optional now.

    Java SE 9 Optional or() Example-2:-

    现在让我们来看一个示例,该示例的值在Optional中不存在。

    Java SE 9可选or()示例2:-

    jshell> Optional
    opStr = Optional.empty()opStr ==> Optional.emptyjshell> Supplier
    > supStr = () -> Optional.of("No Name")supStr ==> $Lambda$67/222624801@23faf8f2jshell> opStr.or(supStr)$7 ==> Optional[No Name]

    That’s it all about “Java SE 9: Optional Class Improvements” new feature. We will discuss some more Java SE 9 New Features in my coming posts.

    这就是“ Java SE 9:可选类的改进”新功能的全部内容。 我们将在以后的文章中讨论更多Java SE 9新功能。

    Please drop me a comment if you like my post or have any issues/suggestions/type errors.

    如果您喜欢我的帖子或有任何问题/建议/类型错误,请给我评论。

    Thank you for reading my tutorials.

    感谢您阅读我的教程。

    Happy Java SE 9 Learning!

    Java SE 9学习愉快!

    翻译自:

    se 类java

转载地址:http://pqlzd.baihongyu.com/

你可能感兴趣的文章
第43条:掌握GCD及操作队列的使用时机
查看>>
Windows autoKeras的下载与安装连接
查看>>
CMU Bomblab 答案
查看>>
微信支付之异步通知签名错误
查看>>
2016 - 1 -17 GCD学习总结
查看>>
linux安装php-redis扩展(转)
查看>>
Vue集成微信开发趟坑:公众号以及JSSDK相关
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>