MustBeClosedChecker
The result of this method must be closed.

Category
Severity
ERROR
Maturity

The problem

Methods or constructors annotated with @MustBeClosed require that the returned resource is closed. This is enforced by checking that invocations occur within the resource variable initializer of a try-with-resources statement:

try (AutoCloseable resource = createTheResource()) {
  doSomething(resource);
}

or the return statement of another method annotated with @MustBeClosed:

@MustBeClosed
AutoCloseable createMyResource() {
  return createTheResource();
}

To support legacy code, the following pattern is also supported:

AutoCloseable resource = createTheResource();
try {
  doSomething(resource);
} finally {
  resource.close();
}

Suppression

Suppress false positives by adding an @SuppressWarnings("MustBeClosedChecker") annotation to the enclosing element.