Force GSON para usar un constructor específico

public class UserAction {
    private final UUID uuid;
    private String userId;
    /* more fields, setters and getters here */

    public UserAction(){
        this.uuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
    }

    public UserAction(UUID uuid){
        this.uuid = uuid;
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final UserAction other = (UserAction) obj;
        if (this.uuid != other.uuid && (this.uuid == null || !this.uuid.equals(other.uuid))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 53 * hash + (this.uuid != null ? this.uuid.hashCode() : 0);
        return hash;
    }
}

Estoy usando Gson para serilizar y deserializar esta clase. Como hoy tuve que agregar un UUID final en este objeto. No tengo problema en serializar. Necesito forzar a gson a usarpublic UserAction(UUID uuid) constructor al deserializar. ¿Cómo puedo lograr eso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta