Java 8 - 可选类( Optional Class)

Optional是用于包含非null对象的容器对象。 可选对象用于表示缺少值的null。 此类具有各种实用程序方法,以便于代码将值处理为“可用”或“不可用”,而不是检查空值。 它在Java 8中引入,类似于Guava中的Optional。

Class 声明 (Class Declaration)

以下是java.util.Optional《T》类的声明 -public final class Optional extends Object

类方法Sr.No.方法和描述

1static 《T》 Optional《T》 empty()

返回一个空的Optional实例。

2boolean equals(Object obj)

指示某个其他对象是否“等于”此可选项。

3Optional《T》 filter(Predicate《? super 《T》 predicate)

如果存在值且值与给定谓词匹配,则返回描述值的Optional,否则返回空Optional。

4《U》 Optional《U》 flatMap(Function《? super T,Optional《U》》 mapper)

如果存在值,则将提供的Optional-bearing映射函数应用于该值,返回该结果,否则返回空的Optional。

5T get()

如果此Optional中存在值,则返回该值,否则抛出NoSuchElementException。

6int hashCode()

返回当前值的哈希码值(如果有),如果不存在值,则返回0(零)。

7void ifPresent(Consumer《? super T》 consumer)

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

8boolean isPresent()

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

9《U》Optional《U》 map(Function《? super T,? extends U》 mapper)

如果存在值,则将提供的映射函数应用于该值,如果结果为非null,则返回描述结果的Optional。

10static 《T》 Optional《T》 of(T value)

返回具有指定的当前非null值的Optional。

11static 《T》 Optional《T》 ofNullable(T value)

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

12T orElse(T other)

返回值(如果存在),否则返回其他值。

13T orElseGet(Supplier《? extends T》 other)

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

14《X extends Throwable》 T orElseThrow(Supplier《? extends X》 exceptionSupplier)

返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。

15String toString()

返回此Optional的非空字符串表示形式,适用于调试。

该类继承以下类中的方法 -java.lang.Object

可选示例

使用您选择的任何编辑器创建以下Java程序,例如C:\> JAVA。

Java8Tester.javaimport 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 - allows passed parameter to be null.

Optional a = Optional.ofNullable(value1);

//Optional.of - throws NullPointerException if passed parameter is null

Optional b = Optional.of(value2);

System.out.println(java8Tester.sum(a,b));

}

public Integer sum(Optional a, Optional b) {

//Optional.isPresent - checks the value is present or not

System.out.println("First parameter is present: " + a.isPresent());

System.out.println("Second parameter is present: " + b.isPresent());

//Optional.orElse - returns the value if present otherwise returns

//the default value passed.

Integer value1 = a.orElse(new Integer(0));

//Optional.get - gets the value, value should be present

Integer value2 = b.get();

return value1 + value2;

}

}

验证结果 (Verify the Result)

使用javac编译器编译类如下 -C:\JAVA>javac Java8Tester.java

现在运行Java8Tester如下 -C:\JAVA>java Java8Tester

它应该产生以下输出 -First parameter is present: false

Second parameter is present: true

10

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐