Consideremos primero las siguientes expresiones en Java.El método equals() en Java funciona inesperadamente en el tipo de datos Long
Integer temp = new Integer(1);
System.out.println(temp.equals(1));
if(temp.equals(1))
{
System.out.println("The if block executed.");
}
Todas estas declaraciones funcionan bien. No hay dudas al respecto. La expresión temp.equals(1)
se evalúa a true
como se esperaba y la única instrucción dentro del bloque if
se ejecuta consecuentemente.
Ahora, cuando cambio el tipo de datos de Integer
a Long
, la declaración temp1.equals(1)
se evalúa de forma inesperada a false
de la siguiente manera.
Long temp1 = new Long(1);
System.out.println(temp1.equals(1));
if(temp1.equals(1))
{
System.out.println("The if block executed.");
}
Estas son las declaraciones equivalentes a las mencionadas en el fragmento anterior sólo el tipo de datos ha cambiado y se comportan exactamente opuesta.
La expresión temp1.equals(1)
se evalúa a false
y, en consecuencia, la única declaración dentro del bloque if
no se ejecuta el que la inversa de los estados anteriores. ¿Cómo?
La documentación dice que '.equals' devuelve verdadero solo si ambos objetos son del tipo' long'. – mc10
Intenté 'if (temp1.longValue() == 1)' y 'if (temp1.equals (1l)' ambos funcionaron como se esperaba. – Lion