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");
        }
    
  • 相关阅读:
    Redis分布式锁的实现原理
    Redis锁的简单应用
    Redis所需内存 超过可用内存怎么办
    redis学习笔记之虚拟内存
    组织安全性SQL
    应收发票相关脚本
    用户与职责与请求关系语句
    应收事物处理删除 SQL 语句
    总账库存科目明细追溯
    月结各模块关闭情况查询
  • 原文地址:https://www.cnblogs.com/frankltf/p/10082512.html
Copyright © 2011-2022 走看看