我使用 Bean 类来获取/设置属性的值。在某些情况下,由于值为 null,因此会出现
Exception in thread "main" java.lang.NullPointerException
错误。当我们从 bean 类获取/设置值时,处理空指针异常的最佳实践是什么?
三元运算符好用还是有其他建议?
请找到以下代码行,其中出现空指针异常。
doc.setCatalog_title(sourceAsMap.get("catalog_title").toString());
空指针异常的基本原因是您正在从空变量调用方法或变量,即当前不持有任何对象引用的变量。因此,避免这种情况的简单方法是为该变量分配一个可以调用后续任务的引用
现在这可以在n号中处理。多种方法,其中一些基本方法是:
使用 if 条件
if(doc!=null && sourceAsMap!=null && sourceAsMap.get("catalog_title")!=null)
doc.setCatalog_title(sourceAsMap.get("catalog_title").toString());
使用三元运算符:
doc = null == doc ? new Document():doc;
doc.setCatalog_title(sourceAsMap!=null && sourceAsMap.get("catalog_title")!=null ? sourceAsMap.get("catalog_title").toString() : null);
您可以使用 Guava 先决条件(https://github.com/google/guava/wiki/PreconditionsExplained),因为在执行类之前检查类的先决条件是一个很好的做法。因为您可以使用
checkNotNull(T)
。
如果您希望系统中出现 null,则不要使用 null 检查,而是使用 Optional 类 https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html,
如果您使用的是 Java 7,那么您可以使用 Guava 中的 Optional https://github.com/google/guava/wiki/UsingAndAvoidingNullExplained