JLS объясняет это довольно хорошо:
Область действия локальной переменной в блоке (§14.4) является остальная часть блока, в котором появляется объявление, начиная с его собственный инициализатор и включая любые другие деклараторы справа в заявлении о локальном переменном. jls 6.3
попробовать-защелка-блок определяется как:
TryStatement: попробовать Block Фиксаторы попробовать Block Catchesopt Наконец TryWithResourcesStatement
от jls 14.20.
Так что в вашем коде
try {
Track tLoad = TrackReader.read(fileName); //<-- this variable
//is only visible until here
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}
tload
С видна только до конца try-block
, возвращаемое утверждение не имеет никакого смысла. Вместо этого вы можете попробовать что-то вроде этого:
Track tLoad = null;
try {
tLoad = TrackReader.read(fileName);
} catch (IOException | FormatException ex) {
Logger.getLogger(RailwayModel.class.getName()).log(Level.SEVERE, null, ex);
}
return tLoad;
}