Java Optional 类
Java Optional 类
Java在JDK8中引入了一个新的Optional类。它是一个final类,用于处理Java应用程序中的NullPointerException。我们必须导入java.util包才能使用该类。Optional类提供了用于检查特定变量是否存在值的方法。
Java Optional 类的方法列表
Methods | Description |
---|---|
public static <T> Optional<T> empty() | It returns an empty Optional object. No value is present for this Optional. |
public static <T> Optional<T> of(T value) | It returns an Optional with the specified present non-null value. |
public static <T> Optional<T> ofNullable(T value) | It returns an Optional describing the specified value, if non-null, otherwise returns an empty Optional. |
public T get() | If a value is present in this Optional, returns the value, otherwise throws NoSuchElementException. |
public boolean isPresent() | It returns true if there is a value present, otherwise false. |
public void ifPresent(Consumer<? super T> consumer) | If a value is present, invoke the specified consumer with the value, otherwise do nothing. |
public Optional<T> filter(Predicate<? super T> predicate) | If a value is present, and the value matches the given predicate, return an Optional describing the value, otherwise return an empty Optional. |
public <U> Optional<U> map(Function<? super T,? extends U> mapper) | If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise return an empty Optional. |
public <U> Optional<U> flatMap(Function<? super T,Optional<U> mapper) | If a value is present, apply the provided Optional-bearing mapping function to it, return that result, otherwise return an empty Optional. |
public T orElse(T other) | It returns the value if present, otherwise returns other. |
public T orElseGet(Supplier<? extends T> other) | It returns the value if present, otherwise invoke other and return the result of that invocation. |
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X extends Throwable | It returns the contained value, if present, otherwise throw an exception to be created by the provided supplier. |
public boolean equals(Object obj) | Indicates whether some other object is "equal to" this Optional or not. The other object is considered equal if:
|
public int hashCode() | It returns the hash code value of the present value, if any, or returns 0 (zero) if no value is present. |
public String toString() | It returns a non-empty string representation of this Optional suitable for debugging. The exact presentation format is unspecified and may vary between implementations and versions. |
Java Optional类应用场景
在下面的示例中,我们没有使用可选类。此程序异常终止并引发nullPointerException。
public class Test
{
public static void main(String[] args)
{
String[] str = new String[10];
String lowercaseString = str[5].toLowerCase();
System.out.print(lowercaseString);
}
}
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:8)
应用场景1
import java.util.Optional;
public class Test
{
public static void main(String[] args)
{
String[] str = new String[10];
Optional<String> checkNull = Optional.ofNullable(str[5]);
if (checkNull.isPresent())
{
String lowercaseString = str[5].toLowerCase();
System.out.print(lowercaseString);
}
else
System.out.println("string value is not present");
}
}
输出结果为:
string value is not present
应用场景2
import java.util.Optional;
public class Test
{
public static void main(String[] args)
{
String[] str = new String[10];
str[5] = "JAVA OPTIONAL CLASS EXAMPLE";
Optional<String> checkNull = Optional.ofNullable(str[5]);
if (checkNull.isPresent())
{
String lowercaseString = str[5].toLowerCase();
System.out.print(lowercaseString);
}
else
{
System.out.println("String value is not present");
}
}
}
输出结果为:
java optional class example