用友加密狗注册网站交河做网站价格
用友加密狗注册网站,交河做网站价格,windows优化大师是电脑自带的吗,安平有做网站推广的吗空指针异常是Java中最常见#xff0c;最烦人的异常。 在这篇文章中#xff0c;我想避免这种不希望的异常。 首先让我们创建引发空指针异常的示例 private Boolean isFinished(String status) { if (status.equalsIgnoreCase(Finish)) { return Boolean.TRUE; … 空指针异常是Java中最常见最烦人的异常。 在这篇文章中我想避免这种不希望的异常。 首先让我们创建引发空指针异常的示例 private Boolean isFinished(String status) { if (status.equalsIgnoreCase(Finish)) { return Boolean.TRUE; } else { return Boolean.FALSE; } } 在以前的方法中如果我们将“ status”变量的值传递为null则会在下一行引发Null Pointer Exception if (status.equalsIgnoreCase(Finish)) { 所以我们应该将我的代码更改为以下代码以避免Null Pointer Exception private Boolean isFinished(String status) {if (Finish.equalsIgnoreCase(status)) {return Boolean.TRUE;} else {return Boolean.FALSE;}} 在以前的方法中如果将“ status”变量的值设置为null则不会引发Null Pointer Exception。 如果您有object.equals“ literal” 则应替换为“ literal” .equalsobject 。 如果您有object.equalsEnum.enumElement 则应替换为 Enum.enumElement.equalsobject。 通常您可以确保对象没有等于null值的对象的equals方法。 我将继续提供更多最佳实践和建议。 在第1部分的帖子中我列出了如何在equalsIgnoreCase方法和枚举器中避免NPE 今天我将写以下案例 1-空集合 2-使用一些方法 3-断言关键字 4-断言类 5-异常处理 6-点语法太多 7- StringUtils类 1-空集合 空集合是没有任何元素的集合。 一些开发人员为没有元素的Collection返回空值但这是false您应该返回Collections.EMPTY_LISTCollections.EMPTY_SET和Collections.EMPTY_MAP。 错误的代码 public static List getEmployees() { List list null; return list; } 正确的代码 public static List getEmployees() { List list Collections.EMPTY_LIST; return list; } 2-使用一些方法 使用一些方法来确保不存在空值例如containsindexOfisEmptycontainsKeycontainsValue和hasNext。 例 String myName Mahmoud A. El-Sayed; List list Collections.EMPTY_LIST; boolean exist list.contains(myName); int index list.indexOf(myName); boolean isEmpty list.isEmpty(); Map map Collections.EMPTY_MAP; existmap.containsKey(myName); existmap.containsValue(myName); isEmptymap.isEmpty(); Set setCollections.EMPTY_SET; existset.contains(myName); isEmptyset.isEmpty(); Iterator iterator; exist iterator.hasNext(); 3-断言关键字 assert是Java 1.4中提供的关键字它使您能够测试关于代码的假设。 assert关键字的语法 assert expression1 ; expression1是被评估的布尔表达式如果为false则系统将抛出AssertionError而没有详细消息 assert expression1 : expression2 ; expression1是被评估的布尔表达式如果为false系统将抛出AssertionError并且详细消息为expression2 例如在我的帖子中我想断言表达式不为空那么我应该在下面的代码中编写 public static String getManager(String employeeId) { assert (employeeId ! null) : employeeId must be not null; return Mahmoud A. El-Sayed; } 如果我尝试使用getManagernull调用getManager方法 它将引发“ java.lang.AssertionErroremployeeId不能为空” 在运行代码以启用断言时请注意在java选项中使用-enableassertion 。 4-断言类 断言类存在于com.bea.core.repackaged.springframework.util包中并且有许多断言中使用的方法。 例 public static String getManager(String employeeId) { Assert.notNull(employeeId, employeeId must be not null); Assert.hasLength(employeeId, employeeId must has length greater than 0); return Mahmoud A. El-Sayed; } 如果我尝试使用getManagernull调用getManager方法 它将引发“ java.lang.IllegalArgumentExceptionemployeeId必须不为null” 5-异常处理 我应该小心使用try catch语句或检查变量的空值进行异常处理 例如 public static String getManager(String employeeId) { return null; } 我将使用以下代码进行校准 String managerId getManager(A015); System.out.println(managerId.toString()); 它将引发“ java.lang.NullPointerException” 因此要处理此异常我应该使用try catch或检查空值 尝试catch语句 我将调用代码更改为以下代码 String managerId getManager(A015); try { System.out.println(managerId.toString()); } catch (NullPointerException npe) { //write your code here } b-空值检查 我将调用代码更改为以下代码 String managerId getManager(A015); if (managerId ! null) { System.out.println(managerId.toString()); } else { //write your code here } 6-点语法太多 一些开发人员使用这种方法因为他编写的代码更少但是将来维护和处理异常不会更容易 错误的代码 String attrValue (String)findViewObject(VO_NAME).getCurrentRow().getAttribute(Attribute_NAME); 正确的代码 ViewObject vo findViewObject(VO_NAME); Row row vo.getCurrentRow(); String attrValue (String)row.getAttribute(Attribute_NAME); 7- StringUtils类 StringUtils类是org.apache.commons.lang包的一部分我可以使用它来避免NPE特别是它的所有方法都是null安全的 例如StringUtils。 IsEmpty StringUtils。 IsBlank StringUtils.equals 等。 您可以从这里阅读此类的规范 结束语编写代码时请始终注意NullPointerException 并猜测如何将其抛出到代码中并在代码中编写// TODO以便以后没有更多时间解决它。 参考 避免空指针异常的第1部分 避免空指针异常的第2部分来自我们JCG合作伙伴 Mahmoud A. ElSay 在Oracle Dive博客中发表。 翻译自: https://www.javacodegeeks.com/2012/06/avoid-null-pointer-exception-in-java.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91765.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!