Java8 - Optional类

Java8 - Optional类 首页 / Java入门教程 / Java8 - Optional类

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。

Optional 类的引入很好的解决空指针异常。

以下是java.util.Optional类的声明

public final class Optional<T> extends Object

Optional方法

Sr.No.Method & Remark
1

static Optional empty()

返回空的 Optional 实例。

2

boolean equals(Object Obj)

判断其他对象是否等于 Optional。

3

Optional filter(Predicate predicate)

如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。

4

Optional flatMap(Function> mapper)

如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional

5

T get()

如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException

6

int hashCode()

返回存在值的哈希码,如果值不存在 返回 0。

7

void ifPresent(Consumer consumer)

如果值存在则使用该值调用 consumer , 否则不做任何事情。

8

boolean isPresent()

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

9

Optional map(Function mapper)

如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。

10

static Optional of(T value)

返回一个指定非null值的Optional。

11

static Optional ofNullable(T value)

如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。

12

T orElse(T Other)

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

13

T orElseGet(Supplier other)

如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。

14

T orElseThrow(Supplier exceptionSupplier)

如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。

15

string toString()

返回一个Optional的非空字符串,用来调试

Optional示例

import java.util.Optional;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);
		
      //Optional.ofNullable - 允许传递参数为null。
      Optional<Integer> a = Optional.ofNullable(value1);
		
      //Optional.of - 如果传递的参数为null,则抛出nullpointerexception
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }
	
   public Integer sum(Optional<Integer> a, Optional<Integer> b) {
      //Optional.isPresent - 检查值是否存在
		
      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());
		
      //Optional.orElse - 如果出现否则返回,则返回值
      //默认值传递。
      Integer value1 = a.orElse(new Integer(0));
		
      //Optional.get - 获取值,值应该存在
      Integer value2 = b.get();
      return value1 + value2;
   }
}

使用javac编译器编译类,如下所示-

链接:https://www.learnfk.comhttps://www.learnfk.com/java/java8-optional-class.html

来源:LearnFk无涯教程网

C:\JAVA>javac Java8Tester.java

现在运行Java8Tester,如下所示-

C:\JAVA>java Java8Tester

它应该生成以下输出-

First parameter is present: false
Second parameter is present: true
10

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品实战 -〔邱岳〕

Android开发高手课 -〔张绍文〕

安全攻防技能30讲 -〔何为舟〕

RPC实战与核心原理 -〔何小锋〕

物联网开发实战 -〔郭朝斌〕

React Hooks 核心原理与实战 -〔王沛〕

计算机基础实战课 -〔彭东〕

深入浅出可观测性 -〔翁一磊〕

结构写作力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)