Em certo momento da aula é necessário executar a exclusão de um item do carrinho do compras e o professor codifica o processo da seguinte maneira:
public void remover(Integer produtoId, TipoPreco tipoPreco) {
Produto produto = new Produto();
produto.setId(produtoId);
itens.remove(new CarrinhoItem(produto, tipoPreco));
}
O processo funciona corretamente e o mapa itens remove a chave, limpando o item do carrinho. Entretanto, isso me acendeu a seguinte dúvida: como pode o mapa reconhecer uma nova instância de CarrinhoItem como uma instância que ele já continha?
Eu fiz o debug do processo e constatei que o item adicionado no mapa, no momento de colocar no carrinho, é realmente diferente (endereço de memória) do item instanciado no processo de exclusão. Isso significa que o Spring utiliza o id (anotado com @Id) do produto no processo de hashing a fim de encontrar o mesmo objeto no mapa?
Obrigado