Мне нужно проанализировать объект, и мне нужно обернуть получаемый Reader в PushbackReader. Нужно ли в любом случае закрывать PushbackReader или это достаточно безопасно, чтобы оставить его открытым, поскольку это базовый считыватель (который я не открывал),
С
public static MyObject parse(Reader reader) throws IOException, ParseException {
PushbackReader pReader = new PushbackReader(reader, PUSHBACK_SIZE);
try {
return parseMyObject(pReader);
} finally {
pReader.close();
}
}
Или достаточно безопасно написать только следующее:
public static MyObject parse(Reader reader) throws IOException, ParseException {
return parseMyObject(new PushbackReader(reader, PUSHBACK_SIZE));
}
Для информации, вот как я называю свой парсер:
BufferedReader reader = new BufferedReader(...);
try {
while (...) {
list.add(MyObjectParser.parse(reader));
}
} catch (IOException e) {
throw new RuntimeException("Could not read the stream", e);
} catch (ParseException e) {
throw new ParseRuntimeException("Could not parse the stream", e);
} finally {
// No need for null check.
reader.close();
}