Il metodo equals() richiamato è quello della classe A, ovviamente, non quello della classe String. Se non è sovrascritto, il metodo è ereditato da Object, e restituisce true se e solo se i due riferimenti puntano allo stesso oggetto, cioè:
codice:
a.equals(b)  <==> a==b
Se invece vuoi confrontare le rappresentazioni dei due oggetti come stringhe devi fare:
codice:
( a.toString() ).equals( b.toString() )
Ciao,