• 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");
        }
    
  • 相关阅读:
    hashmap的一些基础原理
    关于uuid
    读锁跟写锁的区别
    栈为什么效率比堆高
    MySQL行级锁、表级锁、页级锁详细介绍
    MYSQL MyISAM与InnoDB对比
    MYSQL锁表问题解决
    mysql查询锁表语句
    三种排序方法
    正则表达式
  • 原文地址:https://www.cnblogs.com/frankltf/p/10082512.html
Copyright © 2020-2023  润新知