Mik*_*.K. 5 java intellij-idea
这是仍然生成警告的最小示例:
File searchpath = new File(path);
for(File file: searchpath.listFiles()){ ... }
Run Code Online (Sandbox Code Playgroud)
(path是传递给此方法的字符串)
带for循环的第二行触发IDE警告:
Dereference of searchPath.listFiles() may produce 'java.lang.NullPointerException'
鉴于我刚刚初始化变量,并且我的程序正常工作,我的第一直觉是这是一个垃圾警告.
这是一个有效的警告,如果是,我该如何清除它?
*EDIT1
如果你给它一个空路径,文件,根据它的Javadoc,将抛出一个NPE.因此,清除错误似乎是一个注释path参数的情况,因此它已知永远不会为null.
警告的原因是listFiles()将null在某些条件下返回.根据文档,null如果path不引用目录,或者访问时发生I/O错误,它将返回.为了防止这种可能性并消除警告,您可以这样做:
File searchpath = new File(path);
File[] files = searchpath.listFiles();
if(files == null){
// handle path not a directory, or other error
} else {
for(File file: files){ ... }
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()
| 归档时间: |
|
| 查看次数: |
5552 次 |
| 最近记录: |