在项目开发中,经常会遇到NullPointerException异常,特别是一些新手,非常的郁闷,有时候会很隐蔽,特别是不同的人书写的代码进行调用时。
以下是我所遇到的NullPointerException异常情景:
问题:
1、循环List时,如:
for(int i = 0,size = list.size();i < size;i ++){ dosomething.... }
2、比较字符串时,如:
if(str.equals("test")){ dosomething.... }
3、调用对象的方法时,如
System.out.println(str.toString());
解决方案:
1、对于这个问题,要不在使用之前判断其是否是非空,如:
if(list != null){ for(int i = 0,size = list.size();i < size;i ++){ dosomething.... } }
要么返回的List对象大小为0的List,如:
list = Collections.emptyList();
2、对于这个问题,要么是在使用之前判断其是否为非空,如:
if(str != null && str.equals("test")){ dosomething.... }
要么是左边是已知的字符串,如:
if("test".equals(str)){ dosomething.... }
3、对于这个问题,若是使用toString()方法,可以这样,如:
System.out.println(String.valueOf(str));
即使该对象为null,但是其调用之后输出的字符串"null",也不会发生异常;
若是调用其它的方法,则需要判断其是否为空,当然若你知道肯定不为空,则不必,若连你自己都无法确定是否非空,则必须要判断一下。