Alternate names: MustBeClosed
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();
}
Suppress false positives by adding the suppression annotation @SuppressWarnings("MustBeClosedChecker")
to the enclosing element.