前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java8特性 Optional 工具类

java8特性 Optional 工具类

原创
作者头像
FHAdmin
修改2021-07-28 10:31:06
3430
修改2021-07-28 10:31:06
举报
文章被收录于专栏:FHADMINFHADMIN

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

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

代码语言:javascript
复制
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. 工具类

代码语言:javascript
复制
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));
		
		
	}
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档