Cómo crear una variable que se puede configurar solo una vez pero no es definitiva en Java

Quiero una clase de la que pueda crear instancias con una variable sin establecer (laid), luego inicialice esta variable más tarde, y téngalainmutable despues de la inicializacion. Efectivamente, me gustaría unafinal Variable que puedo inicializar fuera del constructor.

Actualmente, estoy improvisando esto con un setter que lanza unException como sigue:

public class Example {

    private long id = 0;

    // Constructors and other variables and methods deleted for clarity

    public long getId() {
        return id;
    }

    public void setId(long id) throws Exception {
        if ( this.id == 0 ) {
            this.id = id;
        } else {
            throw new Exception("Can't change id once set");
        }
    }
}

¿Es esta una buena manera de hacer lo que estoy tratando de hacer? Siento que debería poder configurar algo como inmutable después de que se haya inicializado, o que haya un patrón que pueda usar para hacerlo más elegante.

Respuestas a la pregunta(11)

Su respuesta a la pregunta