java开发中如何避免NULL(NPE)异常呢?

欣喜 Java经验 发布时间:2024-11-13 14:46:04 阅读数:13561 1
在日常开发中,每一个都无法避免NULL空异常,那么如何才能避免NPE异常呢?下文笔者将一一道来,如下所示
只是在使用对象时,对其是否为null值进行检测
例:NPE值判断
 
采用if进行null为空判断 


String str = null;
if (str != null) {
    System.out.println(str.length());
} else {
    System.out.println("String is null");
}

使用Optional类(Java 8及以上)

Optional类
  是一个可以为null的容器对象
  如果值存在则isPresent()方法返回true
    调用get()方法会返回该对象
import java.util.Optional;

Optional<String> optionalStr = Optional.ofNullable(str);
optionalStr.ifPresent(s -> System.out.println(s.length()));

//使用orElse或orElseGet来提供一个默认值

System.out.println(optionalStr.orElse("default").length());

使用空对象模式(Null Object Pattern)


// 假设你有一个接口
interface StringWrapper {
    int length();
    // 其他方法...
}

// 真实对象的实现
class RealStringWrapper implements StringWrapper {
    private final String str;

    RealStringWrapper(String str) {
        this.str = str;
    }

    @Override
    public int length() {
        return str.length();
    }
    // 其他方法实现...
}

// 空对象的实现
class NullStringWrapper implements StringWrapper {
    @Override
    public int length() {
        return 0; // 或者返回某个默认值
    }
    // 其他方法实现返回默认值或执行空操作...
}

// 使用时
StringWrapper wrapper = (str == null) ? new NullStringWrapper() : new RealStringWrapper(str);
System.out.println(wrapper.length());

使用Java7中try-catch多异常捕获

try {
    System.out.println(str.length());
} catch (NullPointerException e) {
    System.out.println("String is null");
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202411/17314803998170.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者