Java, ejecutando un método cuando finaliza el alcance del objeto.

Tengo un objeto con cierto estado. El objeto se pasa y su estado se altera temporalmente. Algo como:

public void doSomething(MyObject obj) {
    obj.saveState();
    obj.changeState(...);
    obj.use();
    obj.loadState();
}

En C ++ es posible usar el alcance de un objeto para ejecutar algún código al construir y distraer, como

NeatManager(MyObject obj) { obj.saveState(); }
~NeatManager() { obj.loadState(); }

y llámalo como

void doSomething(MyObject obj) {
    NeatManager mng(obj);
    obj.changeState();
    obj.use();
}

Esto simplifica el trabajo, ya que guardar / cargar está vinculado con el alcance deNeatManager objeto. ¿Es posible hacer algo como esto en Java? ¿Hay una manera de llamar a un método cuando el objeto sale del ámbito en el que se ha declarado? No estoy hablando definalize() ni "destrucción" (recolección de basura), estoy interesado en el alcance.

Gracias

Respuestas a la pregunta(5)

Su respuesta a la pregunta