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...
User result = Optional.ofNullable(user).orElseGet( () -> user2); orElse()和orElseGet()的不同之处 乍一看,这两种方法似乎起着同样的作用。然而事实并非如此。我们创建一些示例来突出二者行为上的异同。 我们先来看看对象为空时他们的行为: @TestpublicvoidgivenEmptyValue_whenCompare_thenOk(){ User us...
@TestpublicvoidgivenPresentValue_whenCompare_thenOk(){Useruser=newUser("john@gmail.com","1234");logger.info("Using orElse");Userresult=Optional.ofNullable(user).orElse(createNewUser());logger.info("Using orElseGet");Userresult2=Optional.ofNullable(user).orElseGet(()->createNewUser());} ...
@TestpublicvoidwhenOrElseGetAndOrElseDiffer_thenCorrect() {Stringtext ="Text present";LOG.debug("Using orElseGet:");StringdefaultText =Optional.ofNullable(text).orElseGet(this::getMyDefault);assertEquals("Text present", defaultText);LOG.debug("Using orElse:"); defaultText =Optional.ofNullable(...
Java8发布快10年了,当初特性之一的Optional你会用了吗?Java8中新增的Optional类型,是用来解决空指针异常问题的。它可以把一个可能为空的对象封装成Optional对象,通过isPresent方法判断是否为空,避免了使用传统的if判断空指针的麻烦。除此之外,Optional还提供了orElse、orElseGet、orElseThrow等方法,让我们可以更加...
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 -> ...
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...
Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null值判断(null的防御性检查),避免null导致的NPE(NullPointerException)。 我们来看一段代码: public static String getGender(Student student){ ...
其中的第一种方法是 orElse(),它的工作方式相当直接:如果存在值,则返回该值,如果不存在值,则返回它收到的参数: @Test publicvoidwhenEmptyValue_thenReturnDefault() {Useruser =null;Useruser2 =newUser("anna@gmail.com","1234");Userresult =Optional.ofNullable(user).orElse(user2); ...
Optional Properties Methods Empty Filter FlatMap Get IfPresent IfPresentOrElse Map Of OfNullable Or OrElse OrElseGet OrElseThrow OptionalDouble OptionalInt OptionalLong PriorityQueue Properties PropertyPermission PropertyResourceBundle Random ResourceBundle ...