java8 Optional的ifPresentOrElse方法如何使用,给出示例
时间: 2023-06-06 20:04:38 浏览: 199
好的,关于你的问题,我可以回答。ifPresentOrElse方法需要提供两个参数:一个是Consumer类型的操作,表示当Optional对象不为空时的操作;另一个是Runnable类型的操作,表示Optional对象为空时的操作,如下所示:
```
Optional<String> optional = Optional.ofNullable("Hello World");
optional.ifPresentOrElse(
value -> System.out.println("Value is present: " + value),
() -> System.out.println("Value is not present"));
```
在这个例子中,Optional对象不为空,因此第一个操作被执行,输出"Value is present: Hello World"。如果Optional对象为空,则第二个操作被执行,输出"Value is not present"。
相关问题
java8 Optional.ofNullable ifPresent示例
Optional.ofNullable 方法可以用来判断一个对象是否为 null,如果对象为 null 则返回一个空的 Optional 对象,否则返回一个包含该对象的 Optional 对象。而 ifPresent 方法则可以用来在 Optional 对象不为空的情况下执行一些操作。
以下是一个示例:
```
String str = null;
Optional<String> optionalStr = Optional.ofNullable(str);
optionalStr.ifPresent(s -> System.out.println("字符串为:" + s));
```
在上面的示例中,我们定义了一个字符串对象 str,并将其赋值为 null。然后使用 Optional.ofNullable 方法将其转换为 Optional 对象,接着使用 ifPresent 方法判断该 Optional 对象是否为空,如果不为空,则执行指定的操作,即打印字符串。由于 str 为 null,因此不会执行 ifPresent 方法中的操作。
如果将 str 的值改为非空字符串,那么 ifPresent 方法中的操作就会被执行,示例代码如下:
```
String str = "Hello World";
Optional<String> optionalStr = Optional.ofNullable(str);
optionalStr.ifPresent(s -> System.out.println("字符串为:" + s));
```
运行结果为:
```
字符串为:Hello World
```
可以看到,ifPresent 方法中的操作被成功执行了。
java8 optional的使用
Java 8引入了Optional类,它是一个容器对象,可以包含或者不包含非空值。Optional类主要用于解决空指针异常的问题,它提供了一种优雅的方式来处理可能为空的值。
下面是Java 8 Optional的使用方式:
1. 创建Optional对象:
- 使用静态方法`Optional.of(value)`创建一个包含非空值的Optional对象。
- 使用静态方法`Optional.empty()`创建一个空的Optional对象。
- 使用静态方法`Optional.ofNullable(value)`创建一个包含可能为空值的Optional对象。
2. 判断Optional对象是否包含值:
- 使用`isPresent()`方法判断Optional对象是否包含非空值。
- 使用`isEmpty()`方法判断Optional对象是否为空。
3. 获取Optional对象的值:
- 使用`get()`方法获取Optional对象中的值。注意:如果Optional对象为空,调用`get()`方法会抛出NoSuchElementException异常。
4. 处理Optional对象的值:
- 使用`ifPresent(Consumer<? super T> consumer)`方法,传入一个Consumer函数式接口来处理Optional对象中的值。如果Optional对象非空,则执行传入的Consumer接口中的逻辑。
- 使用`orElse(T other)`方法,如果Optional对象为空,则返回传入的默认值other。
- 使用`orElseGet(Supplier<? extends T> other)`方法,如果Optional对象为空,则通过传入的Supplier函数式接口生成一个默认值。
- 使用`orElseThrow(Supplier<? extends X> exceptionSupplier)`方法,如果Optional对象为空,则通过传入的Supplier函数式接口抛出一个异常。
5. 使用Optional进行链式调用:
- 使用`map(Function<? super T, ? extends U> mapper)`方法,传入一个Function函数式接口来对Optional对象中的值进行转换。
- 使用`flatMap(Function<? super T, Optional<U>> mapper)`方法,传入一个Function函数式接口来对Optional对象中的值进行转换,并返回一个新的Optional对象。
阅读全文