我是靠谱客的博主 高贵丝袜,最近开发中收集的这篇文章主要介绍java npe是什么_万恶的NPE如何避免,这几种方案你必须知道!!!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文将要为您介绍的是万恶的NPE如何避免,这几种方案你必须知道!!!,具体操作方法:前言

空指针异常在开发中可谓是防不胜防,对于这类异常,预防胜于治疗。那么如何能够有效的预防呢?今天陈某来聊一聊如何预防空指针的异常。

什么是空指针?

当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。

所以,一个对象如果没有进行初始化操作,这时候,如果你调用这个对象的方法或者变量,就会出现空指针异常。

如下面示例会发生空指针异常:

Object object = null;

String string = object.toString();

关于异常的分类,什么是运行时异常,什么是编译时异常,这里不再赘述,未了解的朋友可以查阅相关的文章,这个在初级面试中还是比较常问的一类问题。

如何避免空指针异常?

下面说说几个预防空指针的方案。

字符串比较,常量放在前面

对于初级开发者这是个最常见的坑,老司机基本都知道,示例如下:

if(status.equals("success")){

}

上述代码中,如果status为null将会抛出空指针异常,一种避免的方法就是将常量放在前面,如下:

if("success".equals(status)){

}

使用null安全的方法库

作为Java开发者,用的最多的就是Apache的StringUtils,其中的许多方法使用很方便并且不用担心空指针异常,比如StringUtils.isBlank(),isNumeric(),isWhiteSpace()。

初始化默认值

在给对象初始化的时候给他一个默认值或者默认的构造实现,如下:

User user = new User();

String name = StringUtils.EMPTY;

返回空集合

在返回集合的时候如果是null,统一默认返回一个空集合,如下:

public List getUserList(){

List list = userMapper.gerUserList();

return list == null ? new ArrayList() : list;

}

此时方法调用者将不会担心空指针异常了。

断言

断言是用来检查程序的安全性的,在使用之前进行检查条件,如果不符合条件就报异常,符合就继续。

Java 中自带的断言关键字:assert,如:

assert name == null : "名称不能为空";

除了Java自带的断言,可以使用一些方便的开源库或者自己实现,具体根据开发要求。

Optional

Optional 是 JDK 8 新增的新特性,再也不用 != null 来判断了,这个在一个对象里面的多个子对象连续判断的时候非常有用。

Optional非常强大,想要熟练的使用还是要下一番功夫的,篇幅较大,这里不再细说,想了解的朋友可以查阅相关的文章,这里简单的举个例子,如下:

String version = computer.flatMap(Computer::getSoundcard)

.flatMap(Soundcard::getUSB)

.map(USB::getVersion)

.orElse("UNKNOWN");

避免你的代码中不必要的自动包装和自动解包

不管其他如创建临时对象的缺点,如果wrapper类对象是null,自动包装同样容易导致空指针异常。例如如果person对象没有电话号码的话会返回null,如下代码会因为空指针异常崩溃。

Person ram = new Person("ram");

int phone = ram.getPhone();

当使用自动包装和自动解包的时候,不仅仅是等号,< > 同样会抛出空指针异常。你可以通过这篇文章来学习更多的Java中的自动包装和拆包的陷阱。

定义数据库中的字段是否可为空

作为Java开发者,一切的业务都离不开数据库,表中的字段定义不允许为null能够有效的避免代码中的空指针异常。

总结

本篇文章讲了在实际开发中避免空指针的几种切实可行的几种方法,喜欢的朋友们点点在看,欢迎转发,谢谢支持!!!万恶的NPE如何避免,这几种方案你必须知道!!!就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/bianchengkaifa/Java/106257.html

最后

以上就是高贵丝袜为你收集整理的java npe是什么_万恶的NPE如何避免,这几种方案你必须知道!!!的全部内容,希望文章能够帮你解决java npe是什么_万恶的NPE如何避免,这几种方案你必须知道!!!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部