0
点赞
收藏
分享

微信扫一扫

【Java基础系列】避免NPE的方法


💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

【Java基础系列】避免NPE的方法_intellij idea

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝

✨✨ 欢迎订阅本专栏 ✨✨


博客目录

  • 一.介绍
  • 二.解决方法
  • 1.equals 方法
  • 2.valueOf 与 toString
  • 3.元素的 list 避免 null
  • 4.java8 的 Optional 来避免 NPE


一.介绍

在 Java 编程语言中,NPE 异常是指 NullPointerException 异常。当尝试访问或操作一个空对象(即 null)时,就会抛出此异常。简单来说,当您尝试在代码中引用一个未初始化的对象或变量时,就可能会遇到 NPE 异常。通常,它是由于代码中缺少必要的错误检查而导致的。处理这个异常的最佳方式是在编码过程中避免其发生。

在 Java 中,NullPointerException(NPE)是最常见的异常之一。这种异常通常发生在应用程序试图使用值为 null 的引用类型变量时。以下是一些避免 NPE 的方法:

在编写代码时,请始终检查您正在使用的对象是否已经初始化并且不是 null。可以通过使用 if 语句或 Java 8 中的 Optional 类来实现。

String str = null;
if (str != null) {
    // do something with str
}

Optional<String> optStr = Optional.ofNullable(str);
if (optStr.isPresent()) {
    // do something with optStr.get()
}

Java 8 引入了非空断言运算符(!),它可以在运行时检查一个对象是否为 null。如果对象为空,则会抛出 NPE 异常。

String str = null;
System.out.println(str.length()); // throws NPE
System.out.println(str!.length()); // throws NPE with more information

Java 中的原始类型(int,float,char 等)不能保存 null 值。如果将 null 赋给原始类型,则会导致 NPE 异常。因此,应该尽可能使用包装类型(Integer,Float,Character 等)。

有许多流行的第三方库(如 Apache Commons 和 Guava),提供了许多可靠的方法来避免 NPE 异常。例如,Guava 的 Preconditions 类提供了一组静态方法,可以验证参数并抛出自定义异常消息。

String str = null;
Preconditions.checkNotNull(str, "str must not be null");

总之,避免 NPE 的关键是编写健壮的代码,始终检查您正在使用的对象是否

二.解决方法

1.equals 方法

public void equals() {
    //代表未知的对象,可能会是NULL也可能不是NULL
    Object unKnowObject = null;
    //这样某些情况下可能会抛出NULLPointException
    System.out.println(unKnowObject.equals("str"));
    //改成如下
    //str一定不会空,所以不会抛出异常
    System.out.println("str".equals(unKnowObject));
}

2.valueOf 与 toString

public void toMyString() {
    BigDecimal bigDecimal = null;
    //避免如下写法,当对象为空时候会抛出异常
    System.out.println(bigDecimal.toString());
    //使用String静态方法
    System.out.println(String.valueOf(bigDecimal));
}

3.元素的 list 避免 null

public void retrieveDataFromDB() {
    //如果没有检索到数据,返回0元素的list,map,set而不是null
    List result = Collections.EMPTY_LIST;
}

4.java8 的 Optional 来避免 NPE

有值返回,无值返回默认值

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

【Java基础系列】避免NPE的方法_System_02


举报

相关推荐

0 条评论