"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo convertir de forma segura un Long a un Int en Java 8 y versiones posteriores?

¿Cómo puedo convertir de forma segura un Long a un Int en Java 8 y versiones posteriores?

Publicado el 2024-11-15
Navegar:513

How Can I Safely Cast a Long to an Int in Java 8 and Beyond?

Conversión segura de Long a Int en Java (actualizado para Java 8)

En Java, la conversión de long a int puede potencialmente resultar en pérdida de datos. Para abordar esta preocupación, es esencial un enfoque seguro e idiomático.

Método Math.toIntExact() de Java 8

Antes de Java 8, el método recomendado para transmitir de forma segura un largo a un int era verificar el resultado para detectar una posible pérdida de información. Esto implicó comparar el resultado de la conversión con el valor largo original:

public static int safeLongToInt(long l) {
    int i = (int) l;
    if ((long) i != l) {
        throw new IllegalArgumentException(l   " cannot be cast to int without changing its value.");
    }
    return i;
}

Sin embargo, en Java 8 y superior, a更为简洁有效的方法已被引入:Math.toIntExact()方法。此方法在发生溢出时会抛出ArithmeticException:

import static java.lang.Math.toIntExact;

long foo = 10L;
int bar = toIntExact(foo);

Métodos adicionales a prueba de desbordamiento en Java 8

Además de toIntExact(), Java 8 introdujo varios otros métodos a prueba de desbordamiento que terminan en "exacto". Estos métodos realizan operaciones como suma, resta, negación y decremento mientras verifican posibles desbordamientos:

  • Math.incrementExact(long)
  • Math.subtractExact(long, largo)
  • Math.decrementExact(largo)
  • Math.negateExact(largo)
  • Math.subtractExact(int, int)

Por Utilizando Math.toIntExact() y estos métodos adicionales seguros contra desbordamientos, puede convertir de forma segura valores largos a int y realizar operaciones aritméticas sin riesgo de perder. información.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3