Construtor + XML + setar própria instância

Galera,

Gostaria de saber se é possível alterar o proprio objeto em seu construtor.
Segue o código para melhor entendimento.[code]public class Livro {

// atributos, getters e setters

public Livro() {
	try {
		this = (Livro) new XStream(new StaxDriver()).fromXML("xml de um Livro");
		// Penso em algo similar a isso. 
		// this = "outro objeto to tipo de sua classe"
	} catch (FileNotFoundException e) {
		throw new RuntimeException();
	}
}

}[/code]A idéia é a seguinte: carregar no construtor da classe Livro, um livro que está em um xml e atribuir a ele mesmo.
[color=red]Sei que existem MILHARES de forma de se fazer isso e que dessa maneira (se isso funcionasse), todo new Livro() seria o mesmo livro e não faria sentido e etc etc etc.[/color]
Foi apenas um exemplo rápido que pensei para exemplificar o que quero fazer.
A razão dessa pergunta não é a utilidade, funcionalidade e etc etc… e sim a seguinte questão: é possível dentro do construtor de uma classes alterar seu proprio objeto.

Não.

Em vez de fazer isso (que não é permitido nem em C++, que ordinariamente deixa você fazer coisas impossíveis), você deve criar um método estático que retorna uma instância do objeto. Você pode deixar o construtor “protected” para evitar que o usuário de sua classe crie um “new Livro”, mas como estou vendo, você está usando o XStream, que precisa de um construtor público.

Exemplo (do que eu faria se não estivesse usando o XStream) :

public class X {
    public static X createInstance(String xml) {
        return (X) xstream.fromXML (xml);

    protected X () { // acho que o XStream requer que isto seja público, não protected. Mas...
       ...
    }
...
    private static XStream xstream = new XStream (new StaxDriver());
}