Ale*_*rov 2 java nullpointerexception compiler-warnings
(JDK 1.6.0_23,Eclipse 3.7.0,"潜在空指针访问"警告级别为"警告")请考虑以下示例代码:
Object obj = null;
for (;;) {
obj = getObject();
if (obj != null) break;
Thread.sleep(25);
}
obj.toString();
Run Code Online (Sandbox Code Playgroud)
我在最后一行收到以下警告:Potential null pointer access: The variable obj may be null at this location.有没有真正的方法obj可以实际成为null或为什么编译器这么认为?
我会说编译器将其视为:
Object obj = null;
[Too dumb to interpret this loop]
obj.toString();
Run Code Online (Sandbox Code Playgroud)
因此,如果你不能解释循环的作用,那么obj.toString()可以为null.
例如,您可以通过替换来欺骗编译器:
void x(int x){
return;
x++; //error unreachable code
}
Run Code Online (Sandbox Code Playgroud)
同
void x(int x){
if(true) return;
x++; //compiles
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |