Consideriamo prima le seguenti espressioni in Java.Il metodo equals() in Java funziona in modo imprevisto sul tipo di dati Long
Integer temp = new Integer(1);
System.out.println(temp.equals(1));
if(temp.equals(1))
{
System.out.println("The if block executed.");
}
Queste istruzioni funzionano perfettamente. Non c'è dubbio al riguardo. L'espressione temp.equals(1)
viene valutata come true
come previsto e l'unica istruzione all'interno del blocco if
viene eseguita di conseguenza.
Ora, quando cambio il tipo di dati da Integer
al Long
, la dichiarazione temp1.equals(1)
è inaspettatamente valutata a false
come segue.
Long temp1 = new Long(1);
System.out.println(temp1.equals(1));
if(temp1.equals(1))
{
System.out.println("The if block executed.");
}
Queste sono le istruzioni equivalenti a quelli menzionati nel frammento precedente solo il tipo di dati è stata modificata e si comportano esattamente opposto.
L'espressione temp1.equals(1)
viene valutata su false
e di conseguenza, l'unica istruzione all'interno del blocco if
non viene eseguita quale è il contrario delle precedenti istruzioni. Come?
La documentazione dice che '.equals' restituisce true solo se entrambi gli oggetti sono di tipo' long'. – mc10
Ho provato 'if (temp1.longValue() == 1)' e 'if (temp1.equals (1l)' funzionavano entrambi come previsto – Lion