﻿# V6114\. The 'A' class containing Closeable members does not release the resources that the field is holding\.

Анализатор обнаружил в классе поля, реализующие интерфейс 'Closeable' \(или 'AutoCloseable'\), но ни в одном методе анализируемого класса для них не был вызван метод 'close'\. Такой код говорит о том, что ресурс может быть не закрыт\. 

```cpp
class A {
  private FileWriter resource;
  public A(String name) throws IOException {
    resource = new FileWriter(name); 
  }
  ....
}
```

В данном примере поле 'resource' было инициализировано, но внутри класса 'A' для него не было вызова метода 'close'\. Отсутствие вызова метода закрытия приводит к тому, что ресурс не будет освобождён, даже когда ссылка на объект класса 'A' будет утеряна\. Из\-за этого может произойти нарушение логики работы программы\. Например, если ресурс не будет освобождён, то из\-за этого будет невозможно получить доступ к нему из другой части кода\. 

Исправить подобную ситуацию можно несколькими способами\. Одним из них является добавление в класс 'A' интерфейса 'Closeable' или 'AutoClosable' с методом 'close', внутри которого будет происходить закрытие ресурса:

```cpp
class A implements Closeable {
  private FileWriter resource;
  public A(String name) throws IOException {
    resource = new FileWriter(name); 
  }
  public void close() throws IOException {
    resource.close();
  }
}
```

Не всегда логика программы позволяет реализовать в классе этот интерфейс\. Альтернативным решением будет закрытие ресурса в одном из методов класса 'A': 

```cpp
class A {
  private FileWriter resource;
  public A(String name) throws IOException {
    resource = new FileWriter(name); 
  }
  public void method() throws IOException {
    .... 
    resource.close();
    .... 
  }
}
```