Perdendo referência a item do JTable

Em um trecho de código, busco um item selecionado em um JTable, crio um clone dele, para depois atribuir o clone à esta variável buscada. Como a seguir:

Item item = tbServicos.getSelectedItem();
Item clone = (Item) item.clone();

// Chama o editor do item
ItemEditor itemEditor = itemEditorFactory.create(item);
itemEditor.setItem(clone);

// Se tudo ok, atribui o clone ao item, consolidando a modificação.
// Se não, o clone é descartado.
if (itemEditor.editar())
   item = clone;

if (item == clone)
   System.out.println("são iguais!");

if (item == tbServicos.getSelectedItem())
   System.out.println("são iguais 2");

Se a edição for confirmada, o texto “São iguais!” é impresso, porém, o item no JTable não é atualizado! O texto “São iguais 2” não é impresso.

O que acontece?

Para comparar 2 objetos, use equals, não “==” (exceto no caso em que você quer comparar algo contra “null”).

É que nesse caso eu estou tentando saber se as variáveis se referem ao exato mesmo objeto. Se eu usar o equals aqui, os textos serão impressos, porém o problema continua, ou seja, o item no JTable não é atualizado.

Já entendi o que acontece. Existem 2 objetos (oA e oB) e 3 referências (r1, r2 e r3). Inicialmente, r1 e r2 apontam para oA e r3 para oB. O que meu código faz é apontar r2 para oB, o que não quer dizer que r1 também irá.

Obrigado, thingol, mais uma vez! Ao responder sua afirmação que me dei conta do problema.

Só pra complementar, se eu tivesse alterado o conteúdo da variável “item”, o resultado seria o esperado.