1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Subscrevendo equals com classe anônima

Estou com uma pequena duvida esse código de subscrita do método equals tem como fazer em uma classe anônima?

class Produto {

    private int idProduto;
    private String nome;

    public Produto(String nome) {
        this.nome = nome;
    }

    public int getIdProduto() {
        return idProduto;
    }

    public void setIdProduto(int idProduto) {
        this.idProduto = idProduto;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    // Removeria esse método com classe anônima 
    @Override
    public boolean equals(Object obj) {
        return this.nome.equals(Produto.class.cast(obj).nome);
    }
}

package br.com.michel.testes;

import java.util.ArrayList;
import java.util.List;

class CompararLists {

    public static void main(String[] args) {

        List<Produto> produtos1 = new ArrayList<Produto>(){
            // tipo aqui
            // ...
        };
        produtos1.add(new Produto("Arroz"));
        Produto produto = new Produto("Presunto");
        produto.setIdProduto(1);
        produtos1.add(produto);

        List<Produto> produtos2 = new ArrayList<Produto>();
        produtos2.add(new Produto("Arroz"));
        produtos2.add(new Produto("Presunto"));

        if(produtos1.equals(produtos2)){
            System.out.println("Igual!");
        }

    }

}

No momento esta fazendo o que eu realmente quero, mas como essa comparação vai ser feita só nesse momento não é necessário fazer uma subscrita do equals na classe Produto.

  • Michel, é sobrescrita, de sobrescrever. Nunca vi alguém sobrescrever o equals de uma classe anônima, pois como farias um cast? Por outro lado, se a ideia é fazer uma comparação reutilizável, podes criar um classe com método utilitário, que use um pouco de reflection, assim podes facilitar a comparação de campos, o Apache Commons, por exemplo, disponibiliza um utilitário que faz isso https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/builder/EqualsBuilder.html.

    Márcio Torres   15 de fev de 2015
  • a comparação por si só vc poderia fazer assim

    produto1.getNome().equals(produto2.getNome());

    brow-joe   15 de fev de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags collections java ou faça a sua própria pergunta.