metodo ejemplo java object comparison primitive

ejemplo - if equals java



¿Cómo funciona la comparación Object y primitive, con operator== en Java? (1)

Como siempre, la Especificación del lenguaje Java es el recurso apropiado para consultar

De JLS 15.21.1 ("Operadores de igualdad numérica == y! ="):

Si los operandos de un operador de igualdad son ambos de tipo numérico, o uno es de tipo numérico y el otro es convertible (§5.1.8) a tipo numérico, se realiza una promoción numérica binaria en los operandos (§5.6.2).

Tenga en cuenta que la promoción numérica binaria realiza una conversión de conjunto de valores (§5.1.13) y puede llevar a cabo la conversión de unboxing (§5.1.8).

Luego de 5.6.2 (promoción numérica binaria):

Cuando un operador aplica la promoción numérica binaria a un par de operandos, cada uno de los cuales debe denotar un valor que es convertible a un tipo numérico, se aplican las siguientes reglas, en orden:

  • Si cualquier operando es de un tipo de referencia, está sujeto a la conversión de unboxing (§5.1.8).
  • [...]

Entonces, el Long se desempaqueta a long . Tu código es equivalente a:

Long objectLong = 555l; long primitiveLong = 555l; // This unboxing is compiler-generated due to numeric promotion long tmpLong = objectLong.longValue(); System.out.println(tmpLong == primitiveLong);

Por ejemplo:

Long objectLong = 555l; long primitiveLong = 555l; System.out.println(objectLong == primitiveLong); // result is true.

¿Hay un método de invocación objectLong.longValue () para comparar Long to long o tal vez de alguna otra manera?