zoukankan      html  css  js  c++  java
  • Optional接口简记

    @Data
    public class Employee {
        private String name;
    }
    
    @Data
    public class Company {
    
        private String name;
    
        private List<Employee> employees;
    }
    
    /**
     * optional接口, optional的使用都是基于函数式的用法, 不写if-else判断
     * optional 无法序列化, 不要将她作为方法参数 或 类的成员变量, 只用在方法的返回值上,
     * 用来规避空指针异常
     */
    public class OptionalTest {
    
        @Test
        public void test() {
            Optional<String> optional = Optional.of("hello");
            // 无用的使用方式
            if (optional.isPresent()) {
                System.out.println(optional.get());
            }
    
            // 推荐的使用方式
            optional.ifPresent(item -> System.out.println(item));
        }
    
        @Test
        public void test2() {
            Optional<String> optional = Optional.empty();
            // 推荐的使用方式, 没有值将不执行传入的方法
            optional.ifPresent(item -> System.out.println(item));
            System.out.println("---------------------------------");
    
            System.out.println(optional.orElse("world"));
            System.out.println("---------------------------------");
    
            System.out.println(optional.orElseGet(() ->  "nihao"));
            System.out.println("---------------------------------");
    
        }
    
        @Test
        public void Test3() {
            Employee employee = new Employee();
            employee.setName("zhangsan");
    
            Employee employee2 = new Employee();
            employee2.setName("lisi");
    
            Company company = new Company();
            company.setName("company");
    
            List<Employee> employees = Arrays.asList(employee, employee2);
            company.setEmployees(employees);
    
            List<Employee> list = company.getEmployees();
    
            // 传统手工艺做法:
            /*
            if (null != list) {
                return list;
            } else {
                return new ArrayList<Employee>();
            }
            */
            // 崭新的函数式风格
            Optional<Company> optional = Optional.ofNullable(company);
            System.out.println(
                    optional.map(c -> c.getEmployees()).orElse(Collections.emptyList())
            );
        }
    }
    
  • 相关阅读:
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时8&&9
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时6
    sprintf()函数用法
    openssl生成签名与验证签名
    PHP_EOL换行 与 base64编码
    grep配置颜色显示
    curl发送json格式数据
    sublime text3作为php开发IDE
  • 原文地址:https://www.cnblogs.com/Lothlorien/p/11999977.html
Copyright © 2011-2022 走看看