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)); } }
相关推荐
10. **实用工具类**:如`Arrays`类提供了对数组的各种操作,`Objects`类提供了比较和哈希函数,`Optional`类用于表示可能为null的值,这些工具类都极大地增强了代码的可读性和安全性。 以上仅是可能包含在"牛逼的...
3. **Apache Commons Lang**:Apache软件基金会的一个开源项目,提供了大量扩展Java语言特性的工具类,如字符串处理、数组操作、反射、枚举操作等。 - `StringUtils`:提供了丰富的字符串操作方法,如空白字符处理...
自 Java 8 发布后,Java 有了许多显著的新特性,极大地提升了开发效率和代码质量。以下是对 Java 8 及之后版本主要新特性的深入剖析: 1. **Lambda 表达式**: Java 8 引入了 Lambda 表达式,使得函数式编程成为...
除了这些主要特性,Java 8还包括其他改进,如新的日期和时间API、方法引用、Optional类等。这些都极大地提高了开发者的生产力,使Java语言更加现代化和强大。 总的来说,Java 8的这些新特性让开发者能以更优雅的...
Java 8还引入了`Optional`类用于处理可能为空的引用,避免空指针异常。此外,`CompletableFuture`为异步编程提供了更高级的支持。 Java 8的这些新特性改变了Java编程的方式,使得代码更加简洁,提高了开发效率和...
这个文档包含了Java SE(标准版)8的所有公共API,是理解和使用新特性的关键工具。让我们深入探讨Java 8 API中的一些核心概念和重要特性。 1. **Lambda表达式** Java 8引入了lambda表达式,这是一种简洁的函数式...
在Java编程中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定的、重复的任务,以简化开发过程。这些类通常不包含任何实例变量,且其设计目的是为其他类提供服务。这里我们将探讨27个常用的...
12. **Optional**: Java 8引入的新特性,用于表示可能为null的值,帮助避免空指针异常。 13. **Comparator**: 实现这个接口可以自定义对象的比较规则,常用于集合排序。 14. **ThreadLocal**: 为每个线程提供独立...
Optional 类是一个可以避免空指针异常的强大工具。它可以代表一个可能为空的值容器。通过使用Optional类,开发者可以在不修改现有API的情况下,减少代码中的null检查。例如,下面的代码展示了如何使用Optional来优雅...
Java 8是Java语言发展的一个重要里程碑,引入了许多创新特性,极大地提升了开发效率和代码质量。以下是关于Java 8新特性的详细讲解: 1. **函数式编程:Lambda表达式** Lambda表达式是Java 8中最显著的新特性,它...
以上只是Java 8新特性的一部分,其他还包括日期时间API的改进、新的Optional类以防止空指针异常、类型接口的改进等。这些特性共同提升了Java的现代性和开发效率,使得Java 8成为Java开发者不可或缺的一部分。通过...
总之,Java以其强大、灵活和广泛的应用性,成为了开发者不可或缺的工具,而Java8的特性则进一步提升了其在现代软件开发中的地位。无论是初学者还是经验丰富的开发者,都应深入了解这些特性,以便更好地利用Java进行...
Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,极大地提升了开发效率和代码可读性。在本精简版的Java 8新特性导师讲授中,我们将重点关注四大核心概念:Lambda表达式、Stream流、方法引用...
9. **Optional** 类:Java 8引入的新特性,用于表示可能为null的值,帮助避免空指针异常。 10. **UUID** 类:生成全局唯一标识符(UUID)。 除了标准库,还有一些第三方库提供了丰富的工具类: 1. **Apache ...
Java 8 是一个里程碑式的版本,它引入了许多重要的新特性,极大地改变了Java的编程范式。以下是关于Java 8新特性的详细说明: 1. **Lambda表达式与Functional接口** Lambda表达式是Java 8最显著的特性之一,它允许...
同时,接口还可以包含静态方法,方便工具类的实现。 4. **流API (Stream API)**:Java 8引入了流API,它提供了处理集合的新方式,支持序列化计算,可以进行过滤、映射、归约等操作。流API与lambda表达式结合,使得...
5. **日期时间工具类**: 在Java 8之前,日期时间操作主要依赖`java.util.Date`和`Calendar`,但这两个类的设计并不理想。Java 8引入了`java.time`包,提供了`LocalDate`、`LocalTime`、`LocalDateTime`等新类,以及`...
在Java编程中,工具类(Util)是程序员日常开发中不可或缺的部分。它们提供了一系列静态方法,简化了常见的任务,如字符串处理、集合操作、日期时间管理等。以下是一些Java中常见的工具类及其核心功能的详细说明: ...
Java的`util`工具类是Java标准库中的核心部分,为开发者提供了丰富的功能,极大地简化了编程工作。这个包包含了各种集合框架、日期时间处理、随机数生成、字符串操作、IO流处理等实用工具类。在Java编程中,熟练掌握...