工作中使用Optional处理空指针异常

Optional指南,优雅解决空指针 Optional ,该类提供了一种用于表示可选值而非空引用的类级别解决方案。作为一名 Java 程序员,我真的是烦透了空指针,尽管和它熟得就像一位老朋友,知道它也是迫不得已——程序正在使用一个对象却发现这个对象的值为 null,于是 Java 虚拟机就怒发冲冠地把它抛了出来当做替罪羊。当然了,我们程序员是富有责任心的,不会坐视不管,于是就有了大量的 null 值检查。尽管有时候这种检查完全没有必要,但我们已经习惯了例行公事。 阅读详情

实体类

package po;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {

    /**
     * 姓名
     */
    private String name;

    /**
     * 地址
     */
    private Address address;
}

package po;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@Data
@NoArgsConstructor
public class Address {

    /**
     * 城市
     */
    private String city;
}

以前对空指针的判断

package com.demo;

import po.Address;
import po.Student;

public class TestCase {

    public static void main(String[] args) {
        Student student = new Student("张三",new Address("香港"));
        student = null;
        if (null != student){
            Address address = student.getAddress();
            if (null != address){
                if (null != address.getCity()){
                    System.out.println(address.getCity());
                }
            }
        }
        throw new RuntimeException("学生地址信息不能为空");
    }
}

Optional处理空指针

package com.demo;

import po.Address;
import po.Student;

import java.util.Optional;

public class TestCase2 {
    public static void main(String[] args) {
        Student student = new Student("张三", new Address("香港"));
        student = null;

        String address =
                Optional.ofNullable(student)
                        .map(Student::getAddress)
                        .map(Address::getCity)
                        .orElseThrow(() -> new RuntimeException("学生地址信息不能为空"));
        System.out.println(address);
    }
}

测试结果

student为null,抛出空指针异常
在这里插入图片描述
不为空指针异常的时候,输出字符串
在这里插入图片描述

Java Optional详解:避免空指针异常的优雅方式 Optional是一个容器对象,它可以包含一个非空值或者为空。其设计目的是为了在代码中明确地表示一个值的存在性,避免直接使用空值导致的潜在错误。通过使用Optional,开发者可以在代码中更加清晰地表达意图,并且在处理可能为空的情况时,采用统一、规范的方式。if (user!= null) {} else {而使用Optional在上述示例中,Optional使得代码的意图更加明确,即user的值可能存在也可能不存在,并且通过map和orElse方法简洁地处理了这两种情况。Java。 阅读详情

相关推荐

Java Optional:异常处理和避免方案

通过避免直接使用get()方法、只在返回类型中使用Optional、谨慎使用Optional以及正确处理map()和flatMap()方法中的异常,我们可以更好地处理和避免Optional相关的问题。要避免使用get()方法,我们可以使用isPresent()方法来检查Optional对象是否包含值,然后使用ifPresent()方法来处理包含的值。为了避免异常在map()和flatMap()方法中传播,我们可以使用orElse()或orElseGet()方法在发生异常时提供默认值或执行备选操作。

CyberWizarDD的博客 505

利用Optional解决空指针异常

Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerException)。当我们对对象的属性进行检查,判断它的值是否为期望的格式,最终却发现我们查看的并不是一个对象,而是一个空指针,它会立即抛出一个让人厌烦的 NullPointerException 异常。本质上,Optional 类是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional是 Java 语言的有益补充 —— 它旨在减少代码中的。

AS011x的博客 1697

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

详解 Optional 的使用,优雅的解决空指针异常

Optional帮我们优雅的解决了Java的空指针异常问题,让我们的程序更健壮。经过上述的分析,Optional的使用应该不难,我们只要记住如何使用Optional创建对象,安全的消费值、获取值,就能在大多数场景使用了。在源码分析中,我们发现设计的非常健壮,涵盖了多数场景,这也会提高我们的编码能力。

m0_73311735的博客 2327

基于单片机智能家居控制系统设计

*单片机设计介绍,基于单片机智能家居控制系统设计。

QQ2193276455的博客 1714

PCIe5.0均衡简介(整理版)

pcie5.0 均衡 equalization

m0_53559277的博客 9108

Java 8 的 Optional 类抛异常

Java 8 的 Optional 类抛异常 本文我们介绍当Optional类为空时如何抛自定义异常。 Optional.orElseThrow 简单描述,如果Optional值存在,则isPresent方法返回true,然后调用get方法返回该值。否则抛出NoSuchElementException异常。 orElseThrow(Supplier 示例实战 假设我们有一个方法返回...

neweastsun的专栏 1万+

5G边缘计算:核心网下沉革命

5G核心网与边缘计算的深度融合,通过UPF下沉、本地流量卸载等关键技术,实现了低时延、高效能的分布式计算架构。该技术将数据处理从核心网向边缘节点转移,支持工业控制、车联网、远程医疗等场景的1-10ms超低时延需求。5G核心网的SBA架构和CUPS设计为边缘计算提供了灵活部署基础,SMF、PCF等网元协同确保业务质量与可靠性。

Qinti_mm的博客 1399

JAVA-对象的非空判断

简单的一些if判断我就不写了,最近学的一些java8的新特性 if(Object != null){ do something..... } java8提供了更加优美的写法 public void testOptional() { String arr[] = {"sada", null, ""}; for (String str : strArr) { String newStr = Optional.ofNullable(str).orElse("");

weixin_46690278的博客 4673

Spring Boot Admin 完整教程

SpringBootAdmin是一个用于管理和监控SpringBoot应用的Web工具,提供健康检查、性能指标、日志管理等核心功能。系统由AdminServer(管理服务器)和AdminClient(客户端)组成,通过Actuator端点收集数据。配置需添加Maven/Gradle依赖,通过@EnableAdminServer注解启动服务端,客户端需配置注册信息。支持UI自定义、安全认证(基本/OAuth2)、多种通知方式(邮件/Slack)及与Eureka/Consul等服务发现的集成。最佳实践包括分层监

weixin_51040479的博客 2553

Python自动化:3分钟搞定微信收藏链接批量导出到TXT(附完整代码)

本文介绍如何使用Python自动化工具在3分钟内将微信收藏链接批量导出到TXT文件。通过模拟人类操作和OCR技术,脚本高效处理大量链接,显著提升工作效率,并附有完整代码和实战避坑指南。

weixin_29062671的博客 627

java中的Optional(一)

java,Optional

weixin_61407147的博客 698

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1902

单纯的使用Optional并不能很好的解决业务中的NPE问题

工作中经常会遇到NPE(NullPointException)问题怎么处理,得到最多的回答就是Optional来处理,但是单纯的使用Optional并不能很好的解决业务中的NP问题。所以整理出日常工作中处理NPE问题的思路,供参考。 先看一下思路: 01 避免的操作 01.01 避免入参使用 Optional 日常工作中有是看到如下代码。 public void execute(Optional...

PageThinker 489

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

优雅判空--Optional.ofNullable()方法

工作中经常会调外部接口、或者查询表等,如果对返回结果不进行空指针判断的话就会导致空指针异常。针对这种情况经常会使用if进行判断,比如示例一这样: 示例一: private boolean isNotNull(Object param) { if (param == null) { return false; } else { return true; } } 这还仅仅是针对某个对象进行判空操作,如果我们需要对某个对象的某个具体参数使用,使用前需

sicaujh的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java8.1代码框架,Java8新特性之Fork/Join 框架和Optional 类实例介绍,java8optional

Java8新特性之Fork/Join 框架和Optional 类实例介绍,java8optional一,Fork/Join 框架就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个的小任务运算的结果进行 join 汇总.实现原理图:1,Fork/Join 框架与传统线程池的区别采用 “工作窃取”模式(work-stealing): 当执行新的任务时它可...

weixin_28854085的博客 181

用Optional处理空指针

前言: 对于空指针NullPointException大家不陌生,在工作中也经常会去处理空指针。 为了方便大家更好的处理NPE,Java8中引入了一个新类java.util.Optional。 其实 ,Optional 类的的使用只是提示你这里可能存在空值,需要特殊处理,并提供了一些特殊处理的方法。如果你把 Optional 类当作空指针的救命稻草而不加思考的使用,那么依旧会碰到错误。 因为 Op...

damokelisijian866的博客 1505

深入理解 Java 的 Optional 类:优雅处理空指针异常

Java 的Optional类为处理空指针异常提供了一种优雅的方式。通过使用Optional,开发者可以更清晰地表达值的存在性,避免繁琐的空值检查,提高代码的可读性和健壮性。然而,在使用Optional时,也需要注意其适用场景和潜在的问题,以确保代码的性能和可维护性。在未来的 Java 开发中,合理运用Optional类将成为处理空值问题的重要手段。

潜意识Java的博客 1295

Java 8 Optional类使用教程:告别空指针异常的终极指南

Optional类的出现主要是为了解决在Java编程中普遍存在的空指针异常问题。在Java 8之前,空指针异常通常是由于在访问对象的方法或属性时,没有进行适当的null检查而导致的。Optional类迫使开发者明确地处理可能为空的情况,从而避免潜在的空指针异常风险。此外,Optional类也体现了Java在函数式编程方面的一步进化,它鼓励开发者编写更加清晰和安全的代码。通过使用Optional,可以更好地指导开发者如何处理可能为空的值,尤其是在编写公共API或处理集合和数组时可能出现的null值情况。

超级博客 1442

【Java笔记】Optional如何处理空指针异常 & 为什么不建议get()

Optional普遍用于方法的返回类型,表示方法可能不返回结果(即返回null)

Hansdas的博客 1763

Jdk14都要出了,还不能使用 Optional优雅的处理空指针?

1. 前言 如果你没有处理过空指针,那么你不是一位真正的 Java 程序员。 空指针确实会产生很多问题,我们经常遇到空的引用,然后又想从这个空的引用上去获取其他的值,接着理所当然的碰到了 NullPointException。这是你可能会想,这报错很好处理,然后你看了眼报错行数,对比了下代码。脑海里瞬间闪过 ”对对对,这里有可能为空“,然后加上 null check轻松处理。然而你不知道这已...

未读代码 1651

Java8新特性之空指针异常的克星Optional类

Java8新特性系列我们已经介绍了Stream、Lambda表达式、DateTime日期时间处理,最后以“NullPointerException” 的克星Optional类的讲解来收尾。 背景 作为开发人员每天与NullPointerException斗智斗勇。每接收到参数或调用方法获得值得判断一下是否为null。稍不留意,空指针异常就像幽灵一样出现了。 这篇文章我们来学习Java8是如何通过O...

程序新视界 3856

谈谈Optional如何避免空指针异常

在实际的开发过程中,空指针异常是我们最讨厌的异常,为了防止空指针异常,我们不得不在代码里面写大量的非空判断。 伟大的计算机科学Tony Hoare曾经写到:“我认为null引用从1965年被创造出来导致了十亿美元的损失。当初使用null引 用对我最大的诱惑是它实现起来方便”,但是在JAVA8中引入了一个新的类Optional,用于专门解决非空判断这个问题。 先举一个之间如何防止空指针异常而多...

weixin_42048560的博客 2181

一文教你用好Optional类,再也不怕空指针异常了

Optional是一个容器对象,可以往里面放置一个null值或者非null值。如果值为null,则返回一个空对象。如果值不为null,isPresent()将返回true,get()则获取该值。

qq_36756227的博客 1576

掌握Java中的Optional类:避免空指针异常,优化代码可读性

掌握Java中的Optional类:避免空指针异常,优化代码可读性

末尾卡片和博主交流学习! 1766
上一篇: Apache POI入门学习
下一篇: 工作中使用Optional过滤出符合条件的数据
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值