使用 IBM 静态工具优化 Java 代码,第 2 部分: 分析错误报告
2010-01-11 00:00:00 来源:WEB开发网核心提示: 1String[]str=null;2System.out.println(str[0]);3str[0]="developerWorks";第 2 行和第 3 行都会导致 ERROR2 错误,其中第 2 行试图访问空数组对象 str 的第 0 个元素,使用 IBM 静态工具
1 String[] str = null;
2 System.out.println( str[0]);
3 str[0] = "developerWorks" ;
第 2 行和第 3 行都会导致 ERROR2 错误,其中第 2 行试图访问空数组对象 str 的第 0 个元素,第 3 行试图给空数组对象 str 的第 0 个元素赋值。
总结:访问或修改某个空数组对象的数组元素的起因与调用空对象的方法类似,通常是由于某些特殊情况导致原本应该初始化的数组对象没有被初始化,从而接下来访问或修改其数组元素时产生 java.lang.NullPointerException 异常。
建议的解决方法:与调用空对象的方法类似,尽量在访问或修改某些不能够明确判断是否为空空数组对象的数组元素之前,对其进行空对象判断,从而避免对空数组对象的操作。
同步空对象
清单 5. 同步空对象
String s = null;
int a = 0;
switch( a ) {
case 1: s = new String("developer");
case 2: s = new String("Works");
default:
;
}
synchronized( s ){
……
}
对空对象 s 进行同步。
总结:同步空对象的起因与调用空对象的方法类似,通常是由于某些特殊情况导致原本应该初始化的对象没有被初始化,从而接下来导致同步空对象,并产生 java.lang.NullPointerException 异常。
建议的解决方法:与调用空对象的方法类似,尽量在同步某些不能够明确判断是否为空的对象之前,对其进行空对象判断,从而避免对空对象的操作。
传入空对象参数
更多精彩
赞助商链接