为什么 Intellij idea 在 if 条件下警告空指针?
Why does Intellij idea warn about nullpointer in that if condition?
这是我的代码
if (!multipartFile.isEmpty() && multipartFile.getOriginalFilename() != null && !multipartFile.getOriginalFilename().isBlank()) {
String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
dishCreationDto.setImageFileName(fileName);
dishService.saveWithFile(dishCreationDto, multipartFile);
} else {
dishService.save(dishCreationDto);
}
我是这样看代码的
正如您所看到的,IF 条件的最后一部分是下划线的,因为 Idea 认为 getOriginalFilename
可以 return null,但我已经用那行代码检查了这一点
multipartFile.getOriginalFilename() != null
。我做错了什么?
您可以使用 StringUtils 简化该表达式:
!StringUtils.isNullOrEmpty(multipartFile.getOriginalFilename())
该实用程序 class 中还有其他功能可能会有所帮助,具体取决于您要执行的操作。
IntelliJ 并不总是正确的,但是更详细地查看我们的代码以查看可以 improved/simplified 变得更好 debugging/readability.
总是好的
Idea thinks that getOriginalFilename
can return null
因为可以。
but I've checked this with that line of a code multipartFile.getOriginalFilename() != null
您检查过之前的调用没有 return null
。下一个还可以。
What am I doing wrong?
快速连续调用一种方法两次,而不是将其结果存储在变量中并使用该变量进行检查和进一步处理。事实上,你会第三次调用它。
(这只是我上面的评论的副本)
虽然可能有其他答案显示的方法来简化条件,因为您还需要 if
中 getOriginalFilename()
的结果,我认为 IDE 会接下来抱怨那个,最后你可能不得不硬着头皮为它准备一个变量:
String originalFilename = multipartFile.getOriginalFilename();
if (!multipartFile.isEmpty() && originalFilename != null && !originalFilename.isBlank()) {
String fileName = StringUtils.cleanPath(originalFilename);
dishCreationDto.setImageFileName(fileName);
dishService.saveWithFile(dishCreationDto, multipartFile);
} else {
dishService.save(dishCreationDto);
}
这是我的代码
if (!multipartFile.isEmpty() && multipartFile.getOriginalFilename() != null && !multipartFile.getOriginalFilename().isBlank()) {
String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
dishCreationDto.setImageFileName(fileName);
dishService.saveWithFile(dishCreationDto, multipartFile);
} else {
dishService.save(dishCreationDto);
}
我是这样看代码的
getOriginalFilename
可以 return null,但我已经用那行代码检查了这一点
multipartFile.getOriginalFilename() != null
。我做错了什么?
您可以使用 StringUtils 简化该表达式:
!StringUtils.isNullOrEmpty(multipartFile.getOriginalFilename())
该实用程序 class 中还有其他功能可能会有所帮助,具体取决于您要执行的操作。
IntelliJ 并不总是正确的,但是更详细地查看我们的代码以查看可以 improved/simplified 变得更好 debugging/readability.
总是好的Idea thinks that
getOriginalFilename
can returnnull
因为可以。
but I've checked this with that line of a code
multipartFile.getOriginalFilename() != null
您检查过之前的调用没有 return
null
。下一个还可以。What am I doing wrong?
快速连续调用一种方法两次,而不是将其结果存储在变量中并使用该变量进行检查和进一步处理。事实上,你会第三次调用它。
(这只是我上面的评论的副本)
虽然可能有其他答案显示的方法来简化条件,因为您还需要 if
中 getOriginalFilename()
的结果,我认为 IDE 会接下来抱怨那个,最后你可能不得不硬着头皮为它准备一个变量:
String originalFilename = multipartFile.getOriginalFilename();
if (!multipartFile.isEmpty() && originalFilename != null && !originalFilename.isBlank()) {
String fileName = StringUtils.cleanPath(originalFilename);
dishCreationDto.setImageFileName(fileName);
dishService.saveWithFile(dishCreationDto, multipartFile);
} else {
dishService.save(dishCreationDto);
}