扫码一下
查看教程更方便
optional
是一个容器对象,用于包含非空对象。 可选对象用于表示不存在值的空值。 这个类有各种实用方法来帮助代码将值处理为“可用”或“不可用”,而不是检查空值。 它是在 java 8 中引入的,类似于 guava 中的 optional
。
以下是 java.util.optional
类的声明
public final class optional extends object
序号 | 方法 | 描述 |
---|---|---|
1 | static |
返回一个空的 optional 实例。 |
2 | boolean equals(object obj) | 指示某个其他对象是否“等于”此 optional。 |
3 | optional |
如果存在一个值并且该值与给定的谓词匹配,则它返回一个描述该值的 optional,否则返回一个空的 optional。 |
4 | optional flatmap(function> mapper) | 如果存在一个值,它会将提供的 optional-bearing 映射函数应用于它,返回该结果,否则返回一个空的 optional。 |
5 | t get() | 如果此 optional 中存在值,则返回该值,否则抛出 nosuchelementexception。 |
6 | int hashcode() | 返回当前值的哈希码值(如果有);如果不存在值,则返回 0(零)。 |
7 | void ifpresent(consumer consumer) | 如果存在值,它会使用该值调用指定的使用者,否则什么也不做。 |
8 | boolean ispresent() | 如果存在值,则返回 true,否则返回 false。 |
9 | optional map(function mapper) | 如果存在值,则对其应用提供的映射函数,如果结果为非 null,则返回描述结果的 optional。 |
10 | static |
返回具有指定当前非空值的 optional。 |
11 | static |
返回一个描述指定值的 optional,如果非 null,否则返回一个空 optional。 |
12 | t orelse(t other) | 如果存在则返回值,否则返回其他值。 |
13 | t orelseget(supplier other) | 如果存在则返回值,否则调用 other 并返回该调用的结果。 |
14 | 如果存在,则返回包含的值,否则抛出由提供的供应商创建的异常。 | |
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 - 允许传递的参数为空。
optional a = optional.ofnullable(value1);
//optional.of - 如果传递的参数为 null,则抛出 nullpointerexception
optional b = optional.of(value2);
system.out.println(java8tester.sum(a,b));
}
public integer sum(optional a, optional 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;
}
}
上面代码的运行结果如下