Java中NullPointerException的完美解决方案

本文探讨了Java中NullPointerException的问题,介绍了Java 8引入的Optional类作为解决方案。通过示例,展示了Optional如何创建、获取值,以及如何使用map、flatMap、filter等方法,以避免空指针异常,提升代码可读性和安全性。
摘要由CSDN通过智能技术生成

java.png

null在Java中带来的麻烦

我相信所有的Java程序猿一定都遇到过NullPointerException,空指针在Java程序中是最常见的,也是最烦人的;它让我们很多程序猿产生了根深蒂固的感觉,所有可能产生空指针的地方都的加上if-else检查,但是这带给我们很多麻烦

  • Java本身是强类型的,但是null破坏了这个规则,它可以被赋值给任何对象
  • Java的设计是让程序猿对指针无感知,但是null指针是个例外
  • 它会是代码变得很臃肿,到处都充斥着if-else的空检查,甚至是多层嵌套,代码可读性下降
  • null本身毫无意义,表示不了

前两点不需要特别的说明,后两点举个例子来说明一下:
假如一个人拥有一个手机,每个手机都有生成厂商,每个厂商都会有个名字,用类表示的话:

public class Person {
    private Phone phone;

    public Phone getPhone() {
        return phone;
    }
}

public class Phone {
    private Producer producer;

    public Producer getProducer() {
        return producer;
    }
}

public class Producer {
    private String name;

    public String getName() {
        return name;
    }
}

在这个例子中,假如我们需要取到手机生成厂商的名字

public String getPhoneProducerName(Person person) {
    return person.getPhone().getProducer().getName();
}

由于不一定每个人都会有一个手机,所有在调用getProducer()时可能会出现NullPointerException

一门设计语言本来就是来描述世界的,在这个事例中有的人有手机,有的人也可能没有手机,所以在调用person.getPhone()返回的值就应该包含有和无这两种情况,现在通过返回null<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值