zoukankan      html  css  js  c++  java
  • java8特性 Optional 工具类

    1. 关于Java8工具类Optional的一点使用心得
      对于Java开发中遇到的npe(空指针问题),其实使用工具类Optional处理效果一般,个人感觉最大的用处就是可以减少一定的if语句,减少一定的非空判断,千万不能将Optional放在if内,会非常多此一举。

    个人觉得最实用的例子:
      如果获取不到student的name属性(为空),那么将使用student的rename属性,即使rename、name为空,也不会出现空指针异常。

    import lombok.Data;
    import java.util.Optional;
    
    public class qwe {
        //java fhadmin.cn
        public static void main(String[] args) {
            Student student = new Student();
            student.setReName("tom");
            Student student1 = new Student();
            student1.setName( Optional.ofNullable(student.getName()).orElseGet(student::getReName)); //
            System.out.println(student1);
        }
        @Data
        static class Student{
            String name;
            String reName;
        }
    }

    2. 工具类

    package com.ven.utils;
     
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Optional;
    /**
     * java 8 Optional 工具类
     * @author fhadmin
     * @from fhadmin.cn
     * @ version 1.0
     */
    public class OptionalUtil {
     
        /**
         * 判断输入的字符串是否为空
         * @param str String
         * @return
         */
        public static boolean isEmpty(String str){
            return  Optional.ofNullable(str).isPresent();
        }
        
        /**
         * 判断输入的Integer是否为空
         * @param num Integer
         * @return
         */
        public static boolean isEmpty(Integer num){
            return  Optional.ofNullable(num).isPresent();
        }
        /**
         * 判断输入的Double是否为空
         * @param dnum Double
         * @return
         */
        public static boolean isEmpty(Double dnum){
            return  Optional.ofNullable(dnum).isPresent();
        }
        /**
         * 判断输入的Object是否为空
         * @param obj
         * @return
         */
        public static boolean isEmpty(Object obj){
            return  Optional.ofNullable(obj).isPresent();
            
        }
        
        /**
         * 判断输入的List是否为空,获取该对象
         * @param obj
         * @return
         */
        public static Object get(Object obj){
            return Optional.ofNullable(obj).isPresent()!=false?Optional.ofNullable(obj).get():null;
            
        }
        /**
         * 测试
         * @param args
         */
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            List<String> objList = (List<String>) OptionalUtil.get(list);
            objList.forEach(item->{System.out.println(item);});
            
            String str = null;
            System.out.println("当前对象:"+OptionalUtil.get(str));
            
            
        }
    }
  • 相关阅读:
    从尾到头打印链表-Python
    上台阶三种实现(斐波那契数列)-Python
    Windows/Linux安装python2.7,pycharm和pandas——《利用Python进行数据分析》
    部署(Django )
    第一个Django模型
    第一个Django Project(创建一个简单的博客)
    几个算法基础
    回文序列—Palindrome
    学习笔记:CentOS7学习之二十:shell脚本的基础
    学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理
  • 原文地址:https://www.cnblogs.com/teacher11/p/15069247.html
Copyright © 2011-2022 走看看