Итак, ваш метод создает ресурс, над ним работает какая-то другая сущность, а затем вы освобождаете ресурс.У меня тепло?
В этом случае чистый подход - передать код, который работает с объектом, как функциональный объект, чтобы вы могли определенно очистить его при выходе.Общая идея называется Execute Around.
import java.util.function.Consumer;
public static void getObj(int size, Consumer<Obj> consumer) {
Obj s = new Obj(size);
try {
consumer.accept(s);
} finally {
s.destroy();
}
}
Использовать как:
Obj.getObj(1066, s -> {
... something with s ...;
});
В качестве альтернативы есть java.lang.AutoCloseable
и try-with-resource, который возлагает ответственность на вызывающего, так что это лучше всегопо возможности избегать.
В любом случае, попытка объединить изменяемые файлы в статические данные, как правило, очень плохая идея.