- Java 8 Tutorial
- Java 8 - Home
- Java 8 - Overview
- Java 8 - Environment Setup
- Java 8 - Lambda Expressions
- Java 8 - Method References
- Java 8 - Functional Interfaces
- Java 8 - Default Methods
- Java 8 - Streams
- Java 8 - Optional Class
- Java 8 - Nashorn JavaScript
- Java 8 - New Date/Time API
- Java 8 - Base64
- Java 8 Useful Resources
- Java 8 - Questions and Answers
- Java 8 - Quick Guide
- Java 8 - Useful Resources
- Java 8 - Discussion
Java 8 - 可选类
Optional 是一个容器对象,用于包含非空对象。可选对象用于表示缺少值的 null。此类具有各种实用方法,可帮助代码将值处理为“可用”或“不可用”,而不是检查空值。它是在Java 8中引入的,类似于Guava中的Optional。
类别声明
以下是java.util.Optional<T>类的声明-
public final class Optional<T> extends Object
类方法
先生。 | 方法及说明 |
---|---|
1 | 静态 <T> 可选 <T> 空() 返回一个空的可选实例。 |
2 | 布尔等于(对象 obj) 指示某个其他对象是否“等于”此可选对象。 |
3 | 可选<T>过滤器(谓词<?超级<T>谓词) 如果存在值并且该值与给定谓词匹配,则返回描述该值的可选值,否则返回空可选值。 |
4 | <U> 可选<U> flatMap(Function<? super T,可选<U>> 映射器) 如果存在值,则会将提供的可选承载映射函数应用于该值,返回该结果,否则返回空的可选值。 |
5 | 获取() 如果此Optional中存在值,则返回该值,否则抛出NoSuchElementException。 |
6 | int 哈希码() 返回当前值的哈希码值(如果有);如果不存在值,则返回 0(零)。 |
7 | void ifPresent(Consumer<? super T> 消费者) 如果存在值,它将使用该值调用指定的使用者,否则不执行任何操作。 |
8 | 布尔值 isPresent() 如果存在值则返回 true,否则返回 false。 |
9 | <U>可选<U>映射(函数<?super T,?extends U>映射器) 如果存在值,则对其应用提供的映射函数,如果结果非空,则返回描述结果的可选值。 |
10 | static <T> 可选<T> of(T 值) 返回具有指定的当前非空值的可选值。 |
11 | static <T> 可选<T> ofNullable(T 值) 如果非空,则返回描述指定值的可选值,否则返回空可选值。 |
12 | T orElse(T 其他) 如果存在则返回值,否则返回其他值。 |
13 | T orElseGet(Supplier<? extends T> other) 如果存在则返回该值,否则调用 other 并返回该调用的结果。 |
14 | <X 扩展 Throwable> T 或 ElseThrow(Supplier<? 扩展 X> 异常供应商) 返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。 |
15 | 字符串转字符串() 返回此可选值的非空字符串表示形式,适合调试。 |
该类继承了以下类的方法 -
- java.lang.Object
可选示例
使用您选择的任何编辑器(例如 C:\> JAVA)创建以下 Java 程序。
Java8Tester.java
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 - allows passed parameter to be null. Optional<Integer> a = Optional.ofNullable(value1); //Optional.of - throws NullPointerException if passed parameter is null Optional<Integer> b = Optional.of(value2); System.out.println(java8Tester.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.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; } }
验证结果
使用javac编译器编译该类,如下所示 -
C:\JAVA>javac Java8Tester.java
现在运行 Java8Tester,如下所示 -
C:\JAVA>java Java8Tester
它应该产生以下输出 -
First parameter is present: false Second parameter is present: true 10