107 votos

¿Cómo puedo convertir de int a Long en Java?

Sigo encontrando tanto aquí como en Google gente que tiene problemas para pasar de long a int y no al revés. Sin embargo, estoy seguro de que no soy el único que se ha encontrado con este escenario al pasar de int a Long .

Las únicas respuestas que he encontrado han sido "Sólo ponlo como Largo en primer lugar", lo que realmente no responde a la pregunta.

Inicialmente intenté hacer un casting pero me sale un " Cannot cast from int to Long "

for (int i = 0; i < myArrayList.size(); ++i ) {
    content = new Content();
    content.setDescription(myArrayList.get(i));
    content.setSequence((Long) i);
    session.save(content);
}

Como puedes imaginar estoy un poco perplejo, estoy atascado usando int ya que algunos contenidos llegan como un ArrayList y la entidad para la que estoy almacenando esta información requiere el número de secuencia como un Long.

134voto

Daniel Earwicker Puntos 63298

Tenga en cuenta que hay una diferencia entre un lanzamiento a long y un reparto a Long . Si se lanza a long (un valor primitivo), entonces debería encajonarse automáticamente en un Long (el tipo de referencia que lo envuelve).

También puede utilizar new para crear una instancia de Long inicializándolo con el int valor.

100voto

serg Puntos 43893

Usa lo siguiente: Long.valueOf(int); .

11voto

saret Puntos 1739

Si ya tienes el int tipado como un Integer puedes hacer esto:

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

5voto

Maxim Veksler Puntos 4231

Tengo este pequeño juguete, que también se ocupa de las interfaces no genéricas. Me parece bien que lance una ClassCastException si se alimenta mal (OK y feliz)

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}

0voto

MaskedCoder Puntos 11

Tuve muchos problemas con esto. Sólo quería hacerlo:

thisBill.IntervalCount = jPaidCountSpinner.getValue();

Donde IntervalCount es un Long, y el JSpinner fue configurado para devolver un Long. Finalmente tuve que escribir esta función:

    public static final Long getLong(Object obj) throws IllegalArgumentException {
    Long rv;

    if((obj.getClass() == Integer.class) || (obj.getClass() == Long.class) || (obj.getClass() == Double.class)) {
        rv = Long.parseLong(obj.toString());
    }
    else if((obj.getClass() == int.class) || (obj.getClass() == long.class) || (obj.getClass() == double.class)) {
        rv = (Long) obj;
    }
    else if(obj.getClass() == String.class) {
        rv = Long.parseLong(obj.toString());
    }
    else {
        throw new IllegalArgumentException("getLong: type " + obj.getClass() + " = \"" + obj.toString() + "\" unaccounted for");
    }

    return rv;
}

lo cual parece funcionar. Ninguna de las soluciones anteriores me ha funcionado. Muy frustrante.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X