java开发中如何避免NULL(NPE)异常呢?
在日常开发中,每一个都无法避免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"); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。