....improvvisametne un test fallisce sul CI e non riusciamo ad andare in produzione.. momento WTF, ed e' pure domenica!!! Che succede?
Il test controlla un parser che crea un Set di oggetti, quindi verifica che un certo oggetto ci sia nel suddetto Set. Dal debugger, vedo che c'e'! Stampo l'oggetto... c'e'! Stampo l'hashcode()... uguale! Che cappero succede??? Dopo un'ora di variegate bestemmie, ormai in un mix di inglese e italiano, scopro che l'implementazione di hashcode() dell'oggetto prende in considerazione una lista interna di oggetti che e'... mutabile!!! Arfff!!! Succede quindi che quando l'oggetto e' inserito nel Set ha un certo hashcode(), che dopo "cambia" quando la lista interna viene modificata. Ma ormai il Set l'ha piazzato con l'hashcode() vecchio, quindi non lo trovera' mai piu'! E tutto questo perche' ho stupidamente rigenerato il metodo hashcode dall'IDE... sigh! Niente, occhio all'hashcode(), da usare secondo le regole <https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()> :) Ciao, Bruno
