美文网首页
代码新用法

代码新用法

作者: 用户zzzzzz | 来源:发表于2023-11-01 10:33 被阅读0次

    orElseGet是Java8 Optional类中的一个方法,用于在Optional对象为空时提供一个备用值。与orElse方法不同的是,orElseGet方法只有在Optional对象为空时才会执行备用值的计算,而orElse方法无论Optional对象是否为空都会执行备用值的计算。下面是一个使用orElseGet方法的例子:

    Optional<String> optional = Optional.ofNullable(null);
    String result = optional.orElseGet(() -> "备用值");
    System.out.println(result); // 输出:备用值` 
    

    在上面的例子中,由于Optional对象为空,所以orElseGet方法会执行备用值的计算,最终返回了备用值"备用值"。

    Java8 Optional类还有以下常用方法:

    orElse(T other):如果Optional对象中存在值,则返回该值,否则返回other。
    orElseGet(Supplier<? extends T> other):如果Optional对象中存在值,则返回该值,否则返回由Supplier接口实现提供的值。
    orElseThrow(Supplier<? extends X> exceptionSupplier):如果Optional对象中存在值,则返回该值,否则抛出由Supplier接口实现提供的异常。
    filter(Predicate<? super T> predicate):如果Optional对象中存在值并且该值满足Predicate接口实现提供的条件,则返回该Optional对象,否则返回一个空的Optional对象。
    map(Function<? super T, ? extends U> mapper):如果Optional对象中存在值,则将该值传递给Function接口实现提供的方法进行转换,并返回一个包含转换后值的Optional对象,否则返回一个空的Optional对象。
    flatMap(Function<? super T, ? extends Optional<? extends U>> mapper):如果Optional对象中存在值,则将该值传递给Function接口实现提供的方法进行转换,并返回一个包含转换后值的Optional对象,否则返回一个空的Optional对象。

    /**
     * Description:  of 和 ofNullable 方法的区别
     * <br> of 不允许为null ,否则会抛出 NPE
     * <br> ofNullable ,允许为 null
     * @return  void
     * @version v1.0
     * @author wu
     * @date 2022/11/23 10:14
     */
    @Test
    public void ofNullableTest() throws Exception {
        final Optional<String> s = Optional.of("111");
        final Optional<String> s1 = Optional.ofNullable("222");
        System.out.println(s);
        System.out.println(s1);
     
        final Optional<Object> s3 = Optional.ofNullable(null);
        System.out.println(s3);
     
        final Optional<String> s4 = Optional.of(null);
        System.out.println(s4);
    }
    
    
    输出结果:
    
    Optional[111]
    Optional[222]
    Optional.empty
     
    java.lang.NullPointerException
    

    原文链接:https://blog.csdn.net/HaHa_Sir/article/details/128669270

    相关文章

      网友评论

          本文标题:代码新用法

          本文链接:https://www.haomeiwen.com/subject/ijowidtx.html