Objeto auxiliar perdendo informação

Objetivo:

Tenho o método de Controle de Prestações,
que podem varias em X quantidades de parcelas. Se for alterado o valor
automaticamente o método recalcula os valores das proximas parcelas assim como datas.

Problema:

Se alterar os valores e fazer o método recalcular os valores, estou guardando as informações iniciais
em um objeto auxiliar, para que se o botao Cancelar for clicado, possa retornar aos valores padrões “iniciais”
Porém, esta informação está sendo perdida.

ControlaPrestacao controlaPrestacaoBackup = new ControlaPrestacao(venda);

public ExibePrestacao(Frame owner, Venda venda, Pagamento pagamento) {
super(owner);
		this.venda=venda;
		this.pagamento=pagamento;
		initComponents();
	       controlaPrestacaoBackup = venda.getControlaPrestacao();
private void oBtCancelarActionPerformed(ActionEvent e) {
		venda.setControlaPrestacao(controlaPrestacaoBackup);
		this.dispose();
	}

Grato pela atenção,

Att. Jonas

Não se esqueça , quando vc passa um objeto por parâmetro , vc passa a referencia deste objeto ou seja
caso vc faça alguma alteração no método ela sera alterada no objeto que vc passou por parâmetro .
exemplo básico .

[code]
class Fizz {
int x = 5;

public static void main(String[] args) {
	final Fizz f1 = new Fizz();
	Fizz f2 = new Fizz();
	Fizz f3 = FizzSwitch(f1, f2);
	System.out.println((f1 == f3) + " " + (f1.x == f3.x));
}

static Fizz FizzSwitch(Fizz x, Fizz y) {
	final Fizz z = x;
	z.x = 6;
	return z;
}

}[/code]

A saida será “true true”

Porque as referencias de f1 e f3 referenciam o mesmo objeto ou seja então se qualquer um sofrer alteração o outro tbm será alterado .

É porque os dois estão apontando para a mesma posição de memória neste caso.

Já na situação a seguir isto não acontece, por que?

class teste{
public static void main(String[] args) {
	String a = "a";
			String b = "b";
			String c ="";
			System.out.println(a+"  "+b+"  "+c);
			c=a;
			System.out.println(a+"  "+b+"  "+c);
			a="wwwwwww";
			System.out.println(a+"  "+b+"  "+c);
			a=c;
			System.out.println(a+"  "+b+"  "+c); 
            }
   }

[quote=Jose111]É porque os dois estão apontando para a mesma posição de memória neste caso.

Já na situação a seguir isto não acontece, por que?

class teste{ public static void main(String[] args) { String a = "a"; String b = "b"; String c =""; System.out.println(a+" "+b+" "+c); c=a; System.out.println(a+" "+b+" "+c); a="wwwwwww"; System.out.println(a+" "+b+" "+c); a=c; System.out.println(a+" "+b+" "+c); } } [/quote]

Nao se confunda , em Java eh um String objeto Imutável .