Guava - Optional 类
Optional 是一个不可变对象,用于包含非空对象。 可选对象用于表示缺少值的 null。 此类具有各种实用方法,可帮助代码将值处理为可用或不可用,而不是检查 null 值。
类声明
以下是 com.google.common.base.Optional<T> 类的声明 −
@GwtCompatible(serializable = true) public abstract class Optional<T> extends Object implements Serializable
类方法
Sr.No | 方法及描述 |
---|---|
1 | static <T> Optional<T> absent() 返回一个不包含引用的可选实例。 |
2 | abstract Set<T> asSet() 返回一个不可变的单例 Set,其唯一元素是包含的实例(如果存在); 否则是一个空的不可变集。 |
3 | abstract boolean equals(Object object) 如果对象是可选实例,并且所包含的引用彼此相等或两者都不存在,则返回 true。 |
4 | static <T> Optional<T> fromNullable(T nullableReference) 如果 nullableReference 不为 null,则返回包含该引用的可选实例; 否则返回absent()。 |
5 | abstract T get() 如果可空引用不为空,则返回包含该引用的可选实例; 否则返回absent()。 |
6 | abstract int hashCode() 返回此实例的哈希代码。 |
7 | abstract boolean isPresent() 如果此持有者包含一个(非空)实例,则返回 true。 |
8 | static <T> Optional<T> of(T reference) 返回包含给定非空引用的可选实例。 |
9 | abstract Optional<T> or(Optional<? extends T> secondChoice) 如果存在值,则返回此可选值; 否则选择第二个。 |
10 | abstract T or(Supplier<? extends T> supplier) 返回包含的实例(如果存在); 否则供应商.get()。 |
11 | abstract T or(T defaultValue) 返回包含的实例(如果存在); 否则为默认值。 |
12 | abstract T orNull() 返回包含的实例(如果存在); 否则为 null。 |
13 | static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals) 按顺序从提供的选项中返回每个存在实例的值,跳过出现的absent()。 |
14 | abstract String toString() 返回此实例的字符串表示形式。 |
15 | abstract <V> Optional<V> transform(Function<? super T,V> function) 如果实例存在,则使用给定的函数对其进行转换; 否则,返回absent()。 |
继承的方法
该类继承了以下类的方法 −
- java.lang.Object
Example of Optional Class
使用您在 C:/> Guava 中选择的任何编辑器创建以下 java 程序。
GuavaTester.java
import com.google.common.base.Optional; public class GuavaTester { public static void main(String args[]) { GuavaTester guavaTester = new GuavaTester(); Integer value1 = null; Integer value2 = new Integer(10); //Optional.fromNullable - allows passed parameter to be null. Optional<Integer> a = Optional.fromNullable(value1); //Optional.of - throws NullPointerException if passed parameter is null Optional<Integer> b = Optional.of(value2); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> 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.or - returns the value if present otherwise returns //the default value passed. Integer value1 = a.or(new Integer(0)); //Optional.get - gets the value, value should be present Integer value2 = b.get(); return value1 + value2; } }
验证结果
使用javac编译器编译类,如下所示 −
C:\Guava>javac GuavaTester.java
现在运行 GuavaTester 查看结果。
C:\Guava>java GuavaTester
查看结果。
First parameter is present: false Second parameter is present: true 10