zoukankan      html  css  js  c++  java
  • Java避免空指针

    Java避免空指针  
    ====  
      
    1.空指针引起的原因  
    ----  
    * 调用空对象的方法  
    * 访问或更新空对象的变量  
    * 获取空集合的长度  
    * 访问或更新空集合中的内容  
    * 抛出空的Throwable对象  
    * 同步空对象  
      
    2.避免空指针  
    ----  
    为避免空指针,应当在使用之前确保对其做了适当的初始化。  
      
    1. 比较字符串时,模板在前,如:  
        > Sting str = null;  
        > if("test".equals(str)){  
        > //do something  
        > }  
    2. 检查方法传进来的参数是否为空,如:  
        > public static int getLength(){  
        > if(s == null){  
        > throw new IllegalArgumentException("The argument cannot be null");    >   
        > }  
        > return s.length();  
        > }  
      
    3. 使用String.valueOf()而不是toString()  
    4. 使用三元操作符,如:  
        > String message = (str == null) ? "":"message";  
    5. 方法返回空集合,而不是null,如:  
        > private static List<Integer> getList(String jsonData){  
        > if(jsonData == null){  
        > return Collections.emptyList();  
        > }  
        > //do something  
        > }  
    6. 使用Apache StringUtils类(如果是Android的话,可以使用TextUtils.isEmpty()方法),如:  
        > if(TextUtils.isEmpty(str))  
    7. 合理使用contains(),containsKey,containsValue等方法,如:  
    *   
        > Map<String, String> map = ...  
        > ...  
        > String key = ...  
        > if(map.containsKey(key)){  
        > //do something  
        > }  
    *   > JSONObject jsonObject= new JSONObject() ;  
        > String key = ...  
        > if (jsonObject.has(key)) {  
        > try {  
        > long result = jsonObject.getLong(key);  
        > } catch (JSONException e) {  
        > e.printStackTrace();  
        > }  
        > }  
    8. 检查外部方法的返回值是否为空  
    9. 使用Assertions(断言),如:  
        > public static int getLength(String str){  
        > /*确定string不为空*/  
        > assert(str!=null);  
        > return str.length();  
        > }  
          
            此时如果str为空,那么则抛出java.lang.AssertionError异常而不是空指针异常  
    10. 使用Unit Tests 

  • 相关阅读:
    算法面试题
    学习进度条(一)
    代码作业——四则运算
    构建之法阅读笔记01
    本学期的阅读计划与快速阅读《构建之法》后提出问题
    自我介绍及学期目标
    对天天开心消消乐(订餐系统)的建议
    《构建之法》阅读笔记01-快速阅读后的几个问题。
    二柱子之随机四则运算
    自我介绍
  • 原文地址:https://www.cnblogs.com/xieping/p/4784523.html
Copyright © 2011-2022 走看看