zoukankan      html  css  js  c++  java
  • Optional

    Optional

    概述
    • Java 8开始引入的Optional类,主要解决的问题是空指针异常(NullPointerException)

    使用

    of()/ofNullable()
    • of() 和 ofNullable() 方法创建包含值的 Optional。两个方法的不同之处在于如果你把 null 值作为参数传递进去,of() 方法会抛出 NullPointerException,ofNullable()不会
        @Test(expected = NullPointerException.class)
        public void run() {
            User user=null;
            Optional<User> opt = Optional.of(user);
        }
        @Test
        public void run1(){
            String name=null;
            Optional<String> opt=Optional.ofNullable(name);
        }
    
    get()
    • ptional 实例中取回实际值对象的方法之一是使用 get() 方法:
    orElse() 和 orElseGet()
    • 在对象为空的时候返回默认值。
    • 如果它们接收的都是函数时,当不为空指针的情况下,orElse()仍会执行,而orElseGet()不会执行,类似懒加载原理。
        @Test
        public void run2(){
            User user=null;
           User user1=new User("langerfei@163.com");
            User result=Optional.ofNullable(user).orElse(user1);
            assertEquals("langerfei@163.com",result.getEmail());
        }
    
        @Test
        public void run3(){
            User user=null;
            User result=Optional.ofNullable(user).orElseGet(()->createUser());
            assertEquals("15363144@qq.com",result.getEmail());
        }
    
        @Test
        public void run4(){
            User user1=new User("langerfei@163.com");
            User result=Optional.ofNullable(user1).orElse(user1);
            assertEquals("langerfei@163.com",result.getEmail());
    
            User result2=Optional.ofNullable(user1).orElseGet(()->createUser());
            assertEquals("15363144@qq.com",result2.getEmail());
        }
    
        private User createUser(){
            return new User("15363144@qq.com");
        }
    
  • 相关阅读:
    算法竞赛入门经典训练指南——UVA 11300 preading the Wealth
    hiho一下 第148周
    ajax总结及案例
    Spring事务
    Struts2拦截器介绍
    Struts2的拦截器----Dog实例
    Struts2文件的下载
    Struts2文件的上传
    Struts2类型转换
    Struts2 属性驱动、模型驱动、异常机制
  • 原文地址:https://www.cnblogs.com/frankltf/p/10082512.html
Copyright © 2011-2022 走看看