se 类java

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

  • Introduction介绍
  • Java SE 8: Optional Class BasicsJava SE 8:可选的类基础知识
  • Java SE 8: Optional Basic ExampleJava SE 8:可选基本示例
  • Java SE 9: Optional Class ImprovementsJava SE 9:可选的类改进
  • Java SE 9: Optional stream() MethodJava SE 9:可选stream()方法
  • Java SE 8 Style: Optional MethodsJava SE 8样式:可选方法
  • Java SE 9: Optional ifPresentOrElse() MethodJava SE 9:可选的ifPresentOrElse()方法
  • Java SE 9: Optional or() MethodJava 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<T> 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<Integer> 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<Optional> 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<Integer> opt1 = division(4,2);    opt1.ifPresent( x -> System.out.println("Option1: Result found = " + x));Optional<Integer> 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.");elseSystem.out.println("Option2: Result not found.");}public static Optional<Integer> division(Integer i1,Integer i2){if(i2 == 0) return Optional.empty();else {Integer i3 = i1/i2;return Optional.of(i3);}}}

    Outuput:-

    输出:

    Option1: Result found = 2
    Option2: Result not found, default vlaue = 0
    Option2: 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<? super Tl> 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<Integer> 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<Integer> 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<T> or(Supplier<? extends Optional<? extends T>> 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<String> opStr = Optional.of("Rams")
    opStr ==> Optional[Rams]jshell> import java.util.function.*jshell> Supplier<Optional<String>> 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<String> opStr = Optional.empty()
    opStr ==> Optional.emptyjshell> Supplier<Optional<String>> 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学习愉快!

    翻译自: https://www.journaldev.com/13108/javase9-optional-class-improvements

    se 类java

se 类java_Java SE 9:可选的类改进相关推荐

  1. java se和java_Java SE 9非常适合灵活,可扩展和无服务器的未来

    java se和java 去年的JavaOne会议对许多Java SE 9新功能的讨论引起了极大的兴奋. 但事实证明,今年的活动更具开创性. 从使Oracle Java EE开源的方方面面到引入功能即 ...

  2. java se是不是java_Java SE和java EE究竟有什么实质上的区别

    1.Java SE: Java SE 是Java平台标准版的简称(Java Platform, Standard Edition) (also known as Java 2 Platform) ,用 ...

  3. JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)

    文章目录 四.JAVA核心库类(下) 1. 异常机制和File类 1.1 异常机制 1.1.1 基本概念 1.1.2 异常的分类 1.1.3 异常的避免 1.1.4 异常的捕获 1.1.5 异常的抛出 ...

  4. 反射工具类 java_Java反射工具类

    importjava.lang.reflect.Field;importjava.lang.reflect.Method;/*** Java反射工具类 * 提供以下几个功能: * 1. 取最简类名 * ...

  5. java se和java_Java:改进了Java SE 6和Java SE 7的客户端和桌面部分!

    java se和java Java 6和Java 7中的客户端改进 了解有关Java SE 6和Java SE 7的客户端和桌面部分的改进,包括新的applet插件,Java Deployment T ...

  6. 某单位会java_Java核心API -- 4(日期类)

    1. Date类(Java.utilDate) java.util.Date类用于封装日期及时间信息,一般仅用它显示某个日期,不对他作任何操作处理,作处理用Calendar类,计算方便. //创建一个 ...

  7. 类 java_java类的基本结构

    一.面向对象的基本概念 万物皆对象.对象的实质是属性和行为. 类是具有共同属性和行为的对象的集合.类定义了对象的属性和方法. 分析过程现有对象后有类,开发过程先有类后有对象. 二.类的基本结构 属性: ...

  8. thread类 java_java入门避坑必读,通过Thread类创建java多线程

    欲善编程,多看.敲.讨论:动眼.手.大脑. 1 为什么要用多线程 平常我们做crud的时候,用到多线程的机会不多.但当我们要处理一些复杂的业务时,或者提高程序处理效率时,就绕不开多线程的使用.也有些时 ...

  9. 设计一个分数类java_Java 有理数类 分数类 Rational类的设计与实现

    要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等. package chapter14; public class Rational e ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(六)h264、aac、flv介绍
  2. css深入浅出 宽度和高度
  3. Unity下个月将推出开源VR编辑器,让VR内容开发so easy
  4. 电脑技巧:Win10自带存储感知功能给电脑磁盘瘦身
  5. (89)多周期时序约束(四)
  6. activity 的返回按钮
  7. YUV、YUV420P(YU12和YV12)、NV12、NV21编码
  8. Skyline软件二次开发初级——9如何在WEB页面中的三维地图上进行交互
  9. java开发随记之 Invalidate Caches / Restart
  10. linux下获得root权限运行程序
  11. WinForm实现倒计时锁定程序完整源码附注释
  12. 使用transformers从头训练Bert
  13. 对捕金猎人的买涨买跌交易感悟?(交易基础篇)
  14. js中each的用法
  15. X4扭曲字体或图形 coreldraw_CorelDRAW X4下载
  16. 设计模式 -- 工厂
  17. 成功在于实践作文_成功作文之成功在于实践作文
  18. 318页精美排版配色商务通用PPT模板
  19. 畅捷通T+与道一云对接集成报销凭证
  20. 文献综述 笔记软件_论坛软件综述

热门文章

  1. 删除数据表中的重复行
  2. [转载] Python3基础:08_02_面向对象编程(OOP)——类和对象
  3. 自制操作系统-使用汇编显示 hello world
  4. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照
  5. 使用Block在两个界面之间传值
  6. [家里蹲大学数学杂志]第410期定积分难题
  7. Flume-NG源码阅读之Interceptor(原创)
  8. 详细介绍android rom移植知识普及
  9. silverlight体验之三:简单控件堆成个Login
  10. Asp.Net中OnClientClick与OnClick