1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
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:
```java
try (AutoCloseable resource = createTheResource()) {
doSomething(resource);
}
```
or the `return` statement of another method annotated with `@MustBeClosed`:
```java
@MustBeClosed
AutoCloseable createMyResource() {
return createTheResource();
}
```
To support legacy code, the following pattern is also supported:
```java
AutoCloseable resource = createTheResource();
try {
doSomething(resource);
} finally {
resource.close();
}
```
|