`
m17189363841
  • 浏览: 13921 次
文章分类
社区版块
存档分类
最新评论

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));
		
		
	}
}

 

 

分享到:
评论

相关推荐

    牛逼的java常用工具类

    10. **实用工具类**:如`Arrays`类提供了对数组的各种操作,`Objects`类提供了比较和哈希函数,`Optional`类用于表示可能为null的值,这些工具类都极大地增强了代码的可读性和安全性。 以上仅是可能包含在"牛逼的...

    Java常用工具类

    3. **Apache Commons Lang**:Apache软件基金会的一个开源项目,提供了大量扩展Java语言特性的工具类,如字符串处理、数组操作、反射、枚举操作等。 - `StringUtils`:提供了丰富的字符串操作方法,如空白字符处理...

    删减版Java新特性(剖析Java8以来的新特性).pdf

    自 Java 8 发布后,Java 有了许多显著的新特性,极大地提升了开发效率和代码质量。以下是对 Java 8 及之后版本主要新特性的深入剖析: 1. **Lambda 表达式**: Java 8 引入了 Lambda 表达式,使得函数式编程成为...

    黑马程序员_java8新特性详解笔记和源码

    除了这些主要特性,Java 8还包括其他改进,如新的日期和时间API、方法引用、Optional类等。这些都极大地提高了开发者的生产力,使Java语言更加现代化和强大。 总的来说,Java 8的这些新特性让开发者能以更优雅的...

    java8新特性

    Java 8还引入了`Optional`类用于处理可能为空的引用,避免空指针异常。此外,`CompletableFuture`为异步编程提供了更高级的支持。 Java 8的这些新特性改变了Java编程的方式,使得代码更加简洁,提高了开发效率和...

    java8 API 文档

    这个文档包含了Java SE(标准版)8的所有公共API,是理解和使用新特性的关键工具。让我们深入探讨Java 8 API中的一些核心概念和重要特性。 1. **Lambda表达式** Java 8引入了lambda表达式,这是一种简洁的函数式...

    27个java常用的工具类

    在Java编程中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定的、重复的任务,以简化开发过程。这些类通常不包含任何实例变量,且其设计目的是为其他类提供服务。这里我们将探讨27个常用的...

    28个java常用的工具类源码

    12. **Optional**: Java 8引入的新特性,用于表示可能为null的值,帮助避免空指针异常。 13. **Comparator**: 实现这个接口可以自定义对象的比较规则,常用于集合排序。 14. **ThreadLocal**: 为每个线程提供独立...

    尚硅谷Java8新特性下载

    Optional 类是一个可以避免空指针异常的强大工具。它可以代表一个可能为空的值容器。通过使用Optional类,开发者可以在不修改现有API的情况下,减少代码中的null检查。例如,下面的代码展示了如何使用Optional来优雅...

    JAVA8新特性讲解

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新特性,极大地提升了开发效率和代码质量。以下是关于Java 8新特性的详细讲解: 1. **函数式编程:Lambda表达式** Lambda表达式是Java 8中最显著的新特性,它...

    java8新特性-最新

    以上只是Java 8新特性的一部分,其他还包括日期时间API的改进、新的Optional类以防止空指针异常、类型接口的改进等。这些特性共同提升了Java的现代性和开发效率,使得Java 8成为Java开发者不可或缺的一部分。通过...

    java和java8特性功能

    总之,Java以其强大、灵活和广泛的应用性,成为了开发者不可或缺的工具,而Java8的特性则进一步提升了其在现代软件开发中的地位。无论是初学者还是经验丰富的开发者,都应深入了解这些特性,以便更好地利用Java进行...

    java8新特性导师讲授精简版

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,极大地提升了开发效率和代码可读性。在本精简版的Java 8新特性导师讲授中,我们将重点关注四大核心概念:Lambda表达式、Stream流、方法引用...

    java常用工具类

    9. **Optional** 类:Java 8引入的新特性,用于表示可能为null的值,帮助避免空指针异常。 10. **UUID** 类:生成全局唯一标识符(UUID)。 除了标准库,还有一些第三方库提供了丰富的工具类: 1. **Apache ...

    Java 8新特性终极指南

    Java 8 是一个里程碑式的版本,它引入了许多重要的新特性,极大地改变了Java的编程范式。以下是关于Java 8新特性的详细说明: 1. **Lambda表达式与Functional接口** Lambda表达式是Java 8最显著的特性之一,它允许...

    java和java8特性功能.zip

    同时,接口还可以包含静态方法,方便工具类的实现。 4. **流API (Stream API)**:Java 8引入了流API,它提供了处理集合的新方式,支持序列化计算,可以进行过滤、映射、归约等操作。流API与lambda表达式结合,使得...

    java 开发工具类

    5. **日期时间工具类**: 在Java 8之前,日期时间操作主要依赖`java.util.Date`和`Calendar`,但这两个类的设计并不理想。Java 8引入了`java.time`包,提供了`LocalDate`、`LocalTime`、`LocalDateTime`等新类,以及`...

    java几个常见工具类参考

    在Java编程中,工具类(Util)是程序员日常开发中不可或缺的部分。它们提供了一系列静态方法,简化了常见的任务,如字符串处理、集合操作、日期时间管理等。以下是一些Java中常见的工具类及其核心功能的详细说明: ...

    java util工具类1

    Java的`util`工具类是Java标准库中的核心部分,为开发者提供了丰富的功能,极大地简化了编程工作。这个包包含了各种集合框架、日期时间处理、随机数生成、字符串操作、IO流处理等实用工具类。在Java编程中,熟练掌握...

Global site tag (gtag.js) - Google Analytics