User result = Optional.ofNullable(user).orElse(createNewUser()); logger.debug("Using orElseGet"); User result2 = Optional.ofNullable(user).orElseGet(() -> createNewUser()); }privateUsercreateNewUser(){ logger.debug("Creating New User");returnnewUser("extra@gmail.com","1234"); } 上...
importjava.util.Optional;publicclassTester{publicstaticvoidmain(String[]args){Optional<Integer>optional=Optional.of(1);optional.ifPresentOrElse(x->System.out.println("Value:"+x),()->System.out.println("Not Present."));optional=Optional.empty();optional.ifPresentOrElse(x->System.out.println("V...
Optional.orElseThrow(Supplier<? extends X> exceptionSupplier) /** 与get 方法相同 */ public T orElseThrow() { if (value == null) { throw new NoSuchElementException("No value present"); } return value; } /** 如果存在值,则返回该值,否则抛出由异常提供函数产生的异常。 类型参数:<X> –...
public<U> Optional<U> map(Function<? super T, ? extends U> mapper) { Objects.requireNonNull(mapper); if (!isPresent()) return empty(); else { return Optional.ofNullable(mapper.apply(value)); }} 可以看到,如果Optional的值为空,map直接返回Optional.EMPTY,否则会执行函数结...
Java8发布快10年了,当初特性之一的Optional你会用了吗?Java8中新增的Optional类型,是用来解决空指针异常问题的。它可以把一个可能为空的对象封装成Optional对象,通过isPresent方法判断是否为空,避免了使用传统的if判断空指针的麻烦。除此之外,Optional还提供了orElse、orElseGet、orElseThrow等方法,让我们可以更加...
1Optional<String> opt = Optional.of("沉默王二");2opt.ifPresent(str -> System.out.println(str.length()));Java 9 后还可以通过方法 ifPresentOrElse(action, emptyAction) 执行两种结果,非空时执行 action,空时执行 emptyAction。1Optional<String> opt = Optional.of("沉默王二");2opt.ifPresentOr...
LOG.debug("Using orElse:"); defaultText = Optional.ofNullable(text).orElse(getMyDefault()); assertEquals("Text present", defaultText); } 如上面的代码所展示的,我们需要判断的 Optional 对象已经不为空了,程序的输出如下所示: Using orElseGet: ...
public Optional<User> findUserByName(String name) { if (name.equals("张三")) { return Optional.of(new User("张三", "男")); } else { return Optional.empty(); } } ifPresent和ifPresentOrElse 再main中进行修改,使用Optional容器来包含User,ifPresent方法,如果optionalUser里面含值就会执行user -> ...
if (null==person){ return "person为null"; } return person; 使用Optional: //对象 人 //属性有 name,age Person person=new Person(); return Optional.ofNullable(person).orElse("person为null"); 测试展示类Person代码(如果有朋友不明白可以看一下这个): ...
Optional是一个容器对象,它可能包含或不包含非空值。如果存在值,isPresent()将返回true,而get()则返回该值。提供了取决于所包含值的存在与否的其他方法,例如orElse()(如果值不存在,则返回默认值)和ifPresent()(若值存在,则执行一段代码)。这是一个基于值的类;对Optional实例使用身份敏感操作(包括引用相等(==)...