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:
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.
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