Я пытаюсь понять Попробуйте-с-ресурсом . Прочитав несколько статей, я понимаю, что каждый класс, реализующий или расширяющий closable / auto-closable, может извлечь выгоду из метода close()
, который вызывается для закрытия объекта.
Теперь на практике у меня есть этот код:
try (FileInputStream inputStream = new FileInputStream(instructionFile);
Scanner sc = new Scanner(inputStream, "UTF-8")) {
while (sc.hasNextLine()) {
String startingPosition = sc.nextLine();
String instructions = sc.nextLine();
// Some actions
}
if (sc.ioException() != null) {
throw sc.ioException();
}
} catch (NoSuchElementException e) {
throw new IncompleteInstructions();
} catch (IOException e) {
throw e;
}
Как видите, я использовал классы FileInputStream
и Scanner
, я ожидал увидеть оба этих класса, реализующие или расширяющие Closable
, вместо этого у меня есть метод classi c close()
, похоже, обертка из Closable
.
Мой вопрос, кто должен реализовывать или расширять Closable
, является ли это источником данных, таких как файлы для класса FileInputStream
и читаемый интерфейс для Scanner
класс.
Спасибо!