JAVA8新特性 ----Optional类
2021/9/8 20:07:13
本文主要是介绍JAVA8新特性 ----Optional类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
static <T> Optional<T> empty() 返回空的 Optional 实例。 boolean equals(Object obj) 判断其他对象是否等于 Optional。 Optional<T> filter(Predicate<? super <T> predicate) 如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。 <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) 如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional T get() 如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException int hashCode() 返回存在值的哈希码,如果值不存在 返回 0。 void ifPresent(Consumer<? super T> consumer) 如果值存在则使用该值调用 consumer , 否则不做任何事情。 boolean isPresent() 如果值存在则方法会返回true,否则返回 false。 <U>Optional<U> map(Function<? super T,? extends U> mapper) 如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。 static <T> Optional<T> of(T value) 返回一个指定非null值的Optional。 static <T> Optional<T> ofNullable(T value) 如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。 T orElse(T other) 如果存在该值,返回值, 否则返回 other。 T orElseGet(Supplier<? extends T> other) 如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。 <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) 如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常 String toString() 返回一个Optional的非空字符串,用来调试
demo
@Entity @Data @Accessors(chain = true) public class User { private int id; private String name; private int age; private Boolean sex; private LocalDateTime date; }
demo1
@Test void optional1() { User user = null; String s = Optional.ofNullable(user) .map(u ->{ //user为null,这段代码不输出 System.out.println("name:" + u.getName()); return u.getName(); }) .orElse("aaa"); System.out.println(s); } @Test void optional2() { User user = new User (); String s = Optional.ofNullable(user) .map(u ->{ //user不为null,这段代码输出 System.out.println("name:" + u.getName()); return u.getName(); }) .orElse("aaa"); System.out.println(s); } //最终都返回 aaa
demo2
当user不为null时,执行某件事
@Test void optional() { Optional.ofNullable(user) .ifPresent(u->{ System.out.println("aaaa");; }); }
demo3
过滤name是zhangsan的user
@Test void optional() { User user = new User(); user.setName("lisi"); user.setSex(true); User zhangsan = Optional.ofNullable(user) .filter(u -> "zhangsan".equals(u.getName())) .orElseGet(() -> { User user1 = new User(); user1.setName("zhangsan"); return user1; }); System.out.println(zhangsan); }
这篇关于JAVA8新特性 ----Optional类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28MQ底层原理资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:新手入门教程
- 2024-11-28MQ项目开发资料详解:入门与初级用户指南
- 2024-11-28MQ消息队列资料入门教程
- 2024-11-28MQ消息队列资料:新手入门详解
- 2024-11-28MQ消息中间件资料详解与应用教程
- 2024-11-28MQ消息中间件资料入门教程
- 2024-11-28MQ源码资料详解与入门教程
- 2024-11-28MQ源码资料入门教程
- 2024-11-28RocketMQ底层原理资料详解