Domanda su metodo

di il
2 risposte

Domanda su metodo

Buonasera a tutti , mi chiamo Alessandro.
Avrei bisogno di un chiarimento su un metodo molto semplice:

class A {
    private int n;

    public A(int n) { this.n = n; }

    public boolean equals(A x){
        return this.n == x.n;
    }
}


class Prova {
    public static void main(String[] args) {
        Object x = new A(10);
        Object y = new A(10);

        System.out.println(x.equals((A)y));
        System.out.println(((A)x).equals((A)y));
    } 
} 
Come mai stampa : FALSE, TRUE ?
Grazie.

2 Risposte

  • Re: Domanda su metodo

    Ciao inggestionale,
    nel primo caso viene richiamato il metodo equals della classe Object che restituisce false perchè i due puntatori puntano a oggetti diversi, nel secondo caso viene richiamato il metodo equals della classe 'A' che confronta i campi 'n'.

    la signature del metodo equals di Object è 'boolean equals(Object other)' quindi se vuoi ridefinirla devi fare:
    
        public boolean equals(Object x)
        {
            if (x instanceof A)
            	return this.n == ((A)x).n;
            else
            	return false;
        }
    
  • Re: Domanda su metodo

    Grazie mille barba59, spiegazione chiarissima.
Devi accedere o registrarti per scrivere nel forum
2 risposte