Java: ¿por qué el tipo primitivo "largo" no acepta un número simple?

longObtuve un método que recibe un parámetro de tipo, y trato de llamarlo pasar 1:

contato.setId(1);

Y recibo esto:

The method setId(Long) in the type Contato is not applicable for the arguments (int).

Pero, ¿no es 1un número largo también? ¿No está dentro del largo alcance ?

PD: Solo para decir, resolví el problema con este código:

Integer y = 1;
long x = y.longValue();
contato.setId(x);

Es solo una pregunta didáctica.

Respuesta 1

longes un tipo de datos que contiene 64 bits (¡no debe confundirse con el Objeto Long!) frente a un int (32 bits), por lo que no puede usar una asignación simple de inta long. Ver: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Para ver cómo declarar los diversos tipos de datos, debe verificar específicamente la siguiente tabla :

Datatype    Default Value
byte        0
short       0
int         0
long        0L
float       0.0f
double      0.0d
char        '\u0000'
Object      null
boolean     false

Entonces, para su caso, longdebe declararse con el número seguido de un L, por ejemplo:

long x = 100L;

Además, haciendo lo que estás haciendo con autoboxing :

Integer y = 1;
long x = y.longValue();

no solo es innecesario, también es muy derrochador. Entonces, por ejemplo, si lo haces en un bucle (muchas veces), ¡tu código será más lento en orden de magnitud!

Respuesta: 2

Debe usar contato.setId(1L);(observe el sufijo "L")

El literal "1" representa un intvalor primitivo , que se convierte en una java.lang.Integerclase contenedora.

Respuesta: 3

Longno es un tipo primitivo, longes. Al usar las clases de envoltura en lugar de los tipos primitivos, debe indicar explícitamente al compilador que el argumento pasado es a longmediante la adición del Lsufijo:

contato.setId(1L);

O simplemente puede cambiar el setIdmétodo para que tome un longargumento primitivo .

Respuesta: 4

Heredé dos bases de código bastante triviales que usan spring para configurar las aplicaciones. Ahora necesito reconfigurar las aplicaciones. Pero mucha de la configuración se proporciona a través de ...

Seguí esta publicación Binding hashmap with tableview (JavaFX) y creé un TableView que se completa con datos de un HashMap. TableView recibe sus datos de un mapa llamado HashMap llamado por ...

Hay una parte de la sintaxis de Java que me molesta: las llaves y los puntos y comas. ¿Existe algún tipo de traductor que me permita utilizar toda la sintaxis de Java excepto ...

Tenemos un sitio web en Caucho Resin. La gran mayoría del sitio es JSP / Java. Tenemos nuestra propia autenticación personalizada en el sitio, lo que significa que no estamos utilizando ninguna autenticación de terceros ...