#java #nullpointerexception #null-pointer
#java #исключение nullpointerexception #нулевой указатель
Вопрос:
Вот мой фрагмент кода.
String fileName = "";
FileDTO file =
FileService.findById(fileId);
if(file != null amp;amp; file.getFileFormate() != null){
fileName = file.getFileName();
fileName = "." file.getFileFormate().getExtension();
}
Здесь я вижу вероятность исключения нулевого указателя. Если file не null, а затем file.getFileFormate() не null, тогда я могу вызвать file.getFileFormate().getExtension() . Поэтому я должен проверять null для каждого из них. Есть ли какой-либо способ проверить это. Что-то вроде:-
file?.getFileFormate()?.getExtension()
Также выполняет ли JVM код слева направо для справа налево?
Итак, мой код холодный, как проверка:
if(file != null amp;amp; file.getFileFormate() != null)
or
if(file.getFileFormate() != null amp;amp; file != null)
or
if(null != file.getFileFormate() amp;amp; null != file)
Комментарии:
1. Слева направо и нет. Другого пути нет. Вы должны связать его
2. В Java нет
?
оператора, вы не можете проверитьnull
это таким образом.
Ответ №1:
Поскольку предположительно FileDTO
это класс, который вы написали, вы можете упростить проверку нулевых значений следующим образом:
if(file != null){
fileName = file.getFileName();
fileName = "." file.getExtension();
}
А затем добавьте что-то вроде следующего в FileDTO
:
public String getExtension() {
String extension = "";
if (this.getFileFormate() != null) {
extension = this.getFileFormate().getExtension();
}
return extension;
}
Это имеет дополнительное преимущество, заключающееся в том, что не раскрывает детали внутренней реализации FileDTO
.
Что касается вашего другого вопроса, как уже говорилось в комментарии, он слева направо, но некоторые операторы имеют порядок приоритета.